1000 A+B Problem
题目大意:输入两个数a和b,输出他们的和。
代码:
#include <stdio.h> int main() { int a, b; while (scanf("%d%d" , &a, &b) != EOF) { printf("%d ", a + b); } return 0; }
1004 Financial Management
题目大意:告诉你Larry的12个月的工资,求这12个月的工资的平均数。
代码:
#include <stdio.h> double number[12], total = 0, average = 0; int main() { int i; for (i = 0; i < 12; i ++) { scanf("%lf", &number[i]); } for (i = 0; i < 12; i ++) { total += number[i]; } average = total / 12.0; printf("$%.2f ", average); return 0; }
1003 Hangover
题目大意:给定一个长度len,求最小的一个满足"1/2+1/3+...+1/(n+1)>=len"的数n。
思路:开一个数组length[n]表示1/2+1/3+...+1/(n+1),然后对于每一个len,查找最小的满足"length[n]>=len"的数n。
我这里是for循环查找的;也可以使用二分查找,这样速度更快。
代码:
#include <stdio.h> double length[500]; int cnt = 0; void prepare() { length[++cnt] = 1 / 2.0; int i; for (i = 3; i < 500; i ++) { cnt ++; length[cnt] += length[cnt-1] + 1 / (double)i; if (length[cnt] >= 5.20) break; } } int solve(double len) { int i; for (i = 1; i <= cnt; i ++) { if (length[i] >= len) return i; } } int main() { prepare(); double len; while (scanf("%lf", &len) != EOF) { if (len <= .0) break; else { int number = solve(len); printf("%d card(s) ", number); } } return 0; }