題目一
正整數a和正整數b 的最小公倍數是指 能被a和b整除的最小的正整數值,設計乙個演算法,求輸入a和b的最小公倍數。
方法一:讓a與b中較大的數乘以1,2,…,如果可以整除較小的數,則輸出。
#include
using
namespace std;
intmain()
for(
int i =
1; i <= b; i++)}
return0;
}
方法二;最小公倍數等於兩個數的乘積除以這兩個數的最大公約數。使用輾轉相除法求最大公約數。
#include
using
namespace std;
intcommondivisor
(int a,
int b)
while
(a % b !=0)
return b;
}int
main()
題目二
計算乙個double型數字的立方根,不使用庫函式。
方法一:使用二分法
方法二:牛頓迭代法,假設輸入的數為a,即求x^ 3-a=0的根。令f(x)=x^ 3-a,迭代公式為xn+
1=xn
−f(x
n)/f
′(xn
)x_=x_n-f(x_n)/f'(x_n)
xn+1=
xn−
f(xn
)/f
′(xn
).
#include
using
namespace std;
bool
equal
(double a,
double b)
double
unsignedgetcuberoot
(double input)
return mid;
}double
unsignedgetcuberoot2
(double input)
return result;
}int
main()
else
cout <<
unsignedgetcuberoot
(input)
<< endl;
}
題目三
將乙個字串str的內容顛倒過來,並輸出。str的長度不超過100個字元。 如:輸入「i am a student」,輸出「tneduts a ma i」。
#include
#include
using
namespace std;
intmain()
return0;
}
題目四
從輸入任意個整型數,統計其中的負數個數並求所有非負數的平均值,結果保留一位小數
#include
using
namespace std;
intmain()
}printf
("%d"
,k);
printf
("\n");
if(i ==0)
else
return0;
}
題目五
連續輸入字串(輸出次數為n,字串長度小於100),請按長度為8拆分每個字串後輸出到新的字串陣列,長度不是8整數倍的字串請在後面補數字0,空字串不處理。
#include
#include
using
namespace std;
intmain()
}}}
題目六
redraiment是走梅花樁的高手。redraiment總是起點不限,從前到後,往高的樁子走,但走的步數最多,不知道為什麼?你能替redraiment研究他最多走的步數嗎?
解析:這是最長上公升子串行問題,使用動態規劃求解。定義乙個result陣列,result[i]為從頭走到第i個樁的最大步數,如果第i個樁的值小於前面所有樁的值,則這個樁的步數應該為1,否則,第i個樁肯定從第0個到第i-1個樁中的某個樁走來的,所以就在0~i-1的可行樁中選步數最大的,也就是result[i]=max(result[i],result[j]+1) ,其中j為低於i的樁。
#include
#include
#include
using
namespace std;
intmain()
res =
max(res,result[i]);
} cout << res << endl;
}return0;
}
題目七
功能:等差數列 2,5,8,11,14。。。。
輸入:正整數n >0
輸出:求等差數列前n項和
返回:轉換成功返回 0 ,非法輸入與異常返回-1
#include
using
namespace std;
intmain()
else
}return0;
}
題目八
自守數是指乙個數的平方的尾數等於該數自身的自然數。例如:25^ 2 = 625,76^ 2 = 5776,9376^2 = 87909376。請求出n以內的自守數的個數。
我的做法:定義乙個函式,通過取餘判斷乙個數是不是為另乙個數的尾數。然後可能是自守數的是0,或者以1,5,6結尾的數,所以對這些數進行判斷。
#include
using
namespace std;
bool
endequal
(int a,
int b)
}return
true;}
intmain()
for(
int i =
5; i < n; i = i +10)
for(
int i =
6; i < n; i = i +10)
} cout << result << endl;
}}
別人的做法:將數字轉化為字串來判斷是否為自守數。
#include
#include
using
namespace std;
bool
isautomorphicnumbers
(int a)
題目九
將乙個字元中所有出現的數字前後加上符號「*」,其他字元保持不變。
思路:遍歷所有字元,如果乙個字元是數字,且前面字元不是數字,則在該字元前面加星號;若該字元是數字,且後面字元不是數字,則在該字元後面新增星號。
#include
#include
using
namespace std;
intmain()
if(str[i]
>=
'0'&& str[i]
<=
'9'&&
(i == str.
size()
-1|| str[i+1]
<
'0'|| str[i+1]
>
'9'))}
cout << str << endl;
}}
題目十
現在ipv4下用乙個32位無符號整數來表示,一般用點分方式來顯示,點將ip位址分成4個部分,每個部分為8位(0~255之間),表示成乙個無符號整數(因此不需要用正號出現),如10.137.17.1,是我們非常熟悉的ip位址,乙個ip位址串中沒有空格出現(因為要表示成乙個32數字)。
現在需要你用程式來判斷ip是否合法。
#include
using
namespace std;
intmain()
return0;
}
#include
#include
#include
using
namespace std;
intmain()
cout << result << endl;
}return0;
}
牛客華為機試HJ1
原題傳送門 1 思路分析 思路1 用空格去切,取切完的最後乙個字串長度即可。思路2 從後往前遍歷,直到遇到空格退出迴圈,設找到的第1個空白字元下標為start,s.length 1 start即為所求。示例 遍歷可得start 5,s.length 1 start 14 1 5 8。2 實現 j a...
牛客網 華為機試 009
輸入乙個int型整數,按照從右向左的閱讀順序,返回乙個不含重複數字的新的整數。輸入描述 輸入乙個int型整數 輸出描述 按照從右向左的閱讀順序,返回乙個不含重複數字的新的整數 示例1 9876673 37689 思路 維護乙個陣列或者vector長度為10,下標0 9代表取得數字,值代表是否已經輸出...
牛客網 華為機試 015
輸入乙個int型的正整數,計算出該int型資料在記憶體中儲存時1的個數。輸入乙個整數 int型別 這個數轉換成2進製後,輸出1的個數 示例1 5 2 思路一 利用十進位制轉二進位制的方法,統計1的個數。事實證明這種方法是大錯特錯了,因為效率不高且沒有考慮負數的情況,負數補碼,完全不能這麼計算 inc...