习题 1-1 平均数(average)
题目描述
输入3个整数,输出它们的平均值,保留3位小数。
解答
#include <iostream>
using namespace std;
float average(float a,float b,float c)
{
float sum,aver;
sum = a + b + c;
aver = sum / 3;
return aver;
}
int main()
{
float a,b,c,ans;
cin >> a >> b >> c;
ans = average(a,b,c);
cout << ans;
return 0;
}
太过于基础,不过多描述。
习题1-2 温度(temperature)
题目描述
输入华氏温度f,输出对应的摄氏温度c,保留3位小数。提示:c=5(f-32)/9。
解答
#include <iostream>
using namespace std;
int main()
{
int f,c;
cin >> f;
float c = 5.0 * (f - 32) / 9;
cout << c;
return 0;
}
也是相当简单的。
习题1-3 连续和(sum)
题目描述
输入正整数n,输出1+2+…+n的值。提示:目标是解决问题,而不是练习编程。
解答
终于是上难度了。
#include <iostream>
using namespace std;
int sum(int EndNumber)
{
int sum = 0;
for (int i = 0;i <= EndNumber;i++)
{
sum = sum + i;
}
return sum;
}
int main()
{
int EndNumber,ans;
cin >> EndNumber;
ans = sum(EndNumber);
cout << ans;
}
这个题也可以用 等差数列求和公式 来解决。
等差数列求和公式:Sum=[n×(n+1)]/2
习题1-4 正弦和余弦(sin and cos)
┐(‘~`;)┌ 我才初二啊,数学没学,不会
习题1-5 打折(discount)
题目描述
一件衣服95元,若消费满300元,可打八五折。输入购买衣服件数,输出需要支付的金额(单位:元),保留两位小数。
解答
#include<iostream>
using namespace std;
float pay(int qty)
{
float money = 95.0 * qty;
if (money >= 300.0)
{
money = money * 0.85;
return money;
}
else
{
return money;
}
}
int main()
{
int qty;
float money;
cin >> qty;
money = pay(qty);
cout << money;
}
习题1-6 三角形(triangle)
题目描述
输入三角形3条边的长度值(均为正整数),判断是否能为直角三角形的3个边长。如果可以,则输出yes,如果不能,则输出no。如果根本无法构成三角形,则输出not a triangle。
解答
#include<iostream>
using namespace std;
int main()
{
int a,b,c;
cin >> a >> b >> c;
if ((a + b <= c) || (a + c <= b) || (b + c <= a))
{
cout << "not a triangle";
return 0;
}
if ((a * a + b * b == c * c) || (a * a + c * c == b * b) || (b * b + c * c == a * a))
{
cout << "yes";
}
else
{
cout << "no";
}
return 0;
}
使用两边之和大于第三边判断是否为三角形,使用勾股定理判断是否为直角三角形。
习题1-7 年份(year)
题目描述
输入年份,判断是否为闰年。如果是,则输出yes,否则输出no。 提示:简单地判断除以4的余数是不够的。
解答
#include<iostream>
using namespace std;
int main()
{
int year;
cin >> year;
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
{
cout << "yes";
return 0;
}
else
{
cout << "no";
return 0;
}
}
闰年判断方法:四年一闰,百年不闰,四百年再闰。 也就是说:
- 如果年份能被4整除且不能被100整除,则是闰年。
- 如果年份能被400整除,则是闰年。
- 否则不是闰年。
总结
至此,我们已经完成了《算法竞赛入门经典》第一章的习题解析。通过这一章的基础训练,相信你对编程竞赛的思维模式和代码规范有了更深的体会。算法竞赛的旅途从来不是一蹴而就的,每一个正确通过的测试用例、每一个优化掉的超时边界、每一个恍然大悟的解题思路,都是你在这条路上留下的坚实脚印。
在后续章节中,我们会逐步深入数据结构、动态规划、图论等核心领域,但请始终牢记:扎实的基础和反复的实践是应对复杂问题的基石。如果在后续学习中遇到瓶颈,不妨回头重新审视这些基础问题,往往会有新的启发。
愿你在不断调试代码与思维的过程中,感受到算法之美与编程之乐。下一章,我们不见不散!