A:
解题思路:
题目意思就是找大于等于n的最小3的倍数,当n为3的倍数时,最小就为n,否则输出3 * (n / 3? + 1)。
下面是c++代码:
#include<iostream>
using namespace std;
int main()
{
long long n;
cin >> n;
if(n % 3 == 0){
cout << n;
}else{
cout << 3 *(n / 3 + 1);
}
return 0;
}
B:
解题思路:
题目意思只要输出一样的就好,长途会骗你出什么,比如告诉你出石头,你就会出布来取得胜利,他就会出剪刀反制你,所以你只要出石头就能获得胜利。
下面是c++代码:
#include<iostream>
using namespace std;
int main()
{
string s;
cin >> s;
if(s == "shitou"){
cout << "shitou";
}else if(s == "jiandao"){
cout << "jiandao";
}else{
cout << "bu";
}
return 0;
}
C:
解题思路:
走楼梯需要的时间:(n - 1) * a
坐电梯需要的时间:(n - 1) * b + (k - 1) * b
下面是c++代码:
#include<iostream>
using namespace std;
int main()
{
int n, k, a, b,pa,dian;
cin >> n >> k >> a >> b;
pa = (n - 1) * a,dian = (n - 1) * b + (k - 1) * b;
if(pa > dian){
cout << 1;
}else if(pa < dian){
cout << 2;
}else{
cout << 0;
}
return 0;
}
D:
解题思路:
依次乘2,当1的个数大于等于n就结束循环,输出次数\
下面是c++代码:
#include<iostream>
using namespace std;
int main()
{
int t,n,sum = 1,count = 0;
cin >> t;
while(t != 0){
cin >> n;
sum = 1;
count = 0;
while(sum < n){
sum *= 2;
count++;
}
cout << count << endl;
t--;
}
return 0;
}
E:
解题思路:
题目意思就是循环n次,ans每次都加上cnt,然后cnt + 2,循环结束时输出ans,时间复杂度O(n),如果加上cnt的那里用的是题目中的循环来加也能AC,只不过时间复杂度要高一点,O(n * cnt)。
下面是c++代码:
#include<iostream>
using namespace std;
int main()
{
long long n,ans = 0,cnt = 1;
cin >> n;
while(n != 0){
ans += cnt;
cnt += 2;
n--;
}
cout << ans;
return 0;
}