L1-1 新世界
-
建议时间:1分钟
-
题面:
这道超级简单的题目没有任何输入。
你只需要在第一行中输出程序员钦定名言“Hello World”,并且在第二行中输出更新版的“Hello New World”就可以了。完整代码
#include<iostream> using namespace std; int main(){cout << "Hello World\nHello New World";return 0; }
L1-2 打折
-
建议时间:1分钟
-
题面:
去商场淘打折商品时,计算打折以后的价钱是件颇费脑子的事情。例如原价 ¥988,标明打 7 折,则折扣价应该是 ¥988 x 70% = ¥691.60。本题就请你写个程序替客户计算折扣价。
-
解题思路:
注意输入为两个整数,做除法时需要除以
10.0
才会得到浮点数结果。保留两位小数用 printf 自带的格式化输出
%.2lf
即可。完整代码
#include<iostream> using namespace std; int main(){int a,b; cin>> a>>b;printf("%.2lf",a*b/10.0);return 0; }
L1-3 奇偶分家
-
建议时间:2分钟
-
题面:
给定N个正整数,请统计奇数和偶数各有多少个?
-
解题思路:
一边输入一边统计奇数与偶数的个数,最后直接输出即可
x&1
可以得到 x 的末位,等同于x%2
完整代码
#include<iostream> using namespace std; int main(){int n,odd=0,even=0; cin >> n;while(n--){int x; cin >> x;if(x&1) odd++;else even++;}cout << odd << ' ' << even;return 0; }
L1-4 冠军魔术
-
推荐时间:4分钟
-
题面:
以桌面上一根带子为界,当他将纸牌从带子的一边推到另一边时,纸牌会变成硬币;把硬币推回另一边会变成纸牌。
这里我们假设纸牌会变成等量的硬币,而硬币变成纸牌时,纸牌的数量会加倍。那么给定纸牌的初始数量,当他来回推了 N 次(来/回各算一次)后,手里拿的是纸牌还是硬币?数量是多少?
这里假设初始状态下魔术师手里全是纸牌。如果最后魔术师手里是纸牌,输出 0 和纸牌数量;如果是硬币,则输出 1 和硬币数量。数字间须有 1 个空格。题目保证结果数值不超出整型范围(即 2^31 −1)。
-
解题思路:
由于初始为纸牌,且只有从硬币推回纸牌时数量才会翻倍,所以推 n 次的翻倍次数为
n/2
,即 n 除以 2 向下取整。那么最后手中的物品数量就为初始数量 * 2^(n/2)
。若推的次数为奇数,最后为硬币;反之,最后为纸牌,输出即可。
由于本题保证了数值不超过整形范围,代表翻倍的次数很小,那么我们直接循环 n 次没次乘 2 即可。
完整代码
#include<iostream> using namespace std; int main(){int st,n; cin >> st >> n;for(int i=1;i<=n/2;i++) st*=2;printf("%d %d",n&1,st); // n为奇数时为硬币,为硬币时输出1return 0; }