信息学奥赛一本通 1.4:循环结构的程序设计(2)
2020-04-07 10:34
第一部分 C++语言 第四章 循环结构的程序设计 第二节 while语句 1085 球弹跳高度的计算 #include using
namespace std; int main(){ double h; scanf("%lf", &h); double
ttl = h; int n = 1; while(n < 10){ n++; h /= 2; ttl += h*2; }
printf("%gn%gn", ttl, h/2); return 0; } 1086 角谷猜想 #include using
namespace std; int main() { int n; scanf("%d", &n); while (n !=
1) { if ( n%2 == 0) { printf("%d/2=%dn", n, n/2); n /= 2; } else{
printf("%d*3+1=%dn", n, n*3+1); n = n * 3 + 1; } } printf("Endn");
return 0; } 1087 级数求和 #include using namespace std; int main() {
int k, n = 0; double sum = 0; scanf("%d", &k); while (sum <=
k) { n++; sum += 1.0 / n; } printf("%dn", n); return 0; } 1088
分离整数的各个数 #include using namespace std; int main() { int n;
scanf("%d", &n); while (n) { printf("%d ", n%10); n /= 10; }
return 0; } 1089 数字反转 #include using namespace std; int main() {
int n; scanf("%d", &n); if (n < 0) { printf("-"); n *= -1; }
while (n % 10 == 0) { n /= 10; } while (n) { printf("%d", n%10); n
/= 10; } return 0; } 1090 含k个3的数 #include using namespace std; int
main() { int m, k, cnt = 0; scanf("%d%d", &m, &k); int t =
m; while (t) { if (t%10 == 3) cnt++; t /= 10; } if (cnt == k
&& m%19 == 0) { printf("YESn"); } else { printf("NOn"); }
return 0; } 第四节 循环嵌套 1091 求阶乘的和 #include using namespace std; int
main() { int n, t = 1, s = 0; scanf("%d", &n); for (int i = 1;
i <= n; i++) { t = 1; for (int j = 1; j <= i; j++) { t *= j;
} s += t; } printf("%dn", s); return 0; } 1092 求出e的值 #include using
namespace std; int main() { int n; long long t = 1; double s = 1;
scanf("%d", &n); for (int i = 1; i <= n; i++) { t = 1; for
(int j = 1; j <= i; j++) { t *= j; } s += 1.0 / t; }
printf("%.10lfn", s); return 0; } 1093 计算多项式的值 #include using
namespace std; int main() { int n; double x = 1, t = 1, s = 1;
scanf("%lf%d", &x, &n); for (int i = 1; i <= n; i++) { t
= 1; for (int j = 1; j <= i; j++) { t *= x; } s += t; }
printf("%.2lfn", s); return 0; } 1094 与7无关的数 #include using
namespace std; int main() { int n, sum = 0; scanf("%d", &n);
for (int i = 1; i <= n; i++) { if (i%10 != 7 && i/10 !=
7 && i%7 !=0) { sum += i * i; } } printf("%dn", sum);
return 0; } 1095 数1的个数 #include using namespace std; int main() {
int n, cnt = 0; scanf("%d", &n); for (int i = 1; i <= n;
i++) { int t = i; while (t) { if (t%10 == 1) cnt++; t /= 10; } }
printf("%dn", cnt); return 0; } 1096 数字统计 #include using namespace
std; int main() { int l, r, cnt = 0; scanf("%d%d", &l, &r);
for (int i = l; i <= r; i++) { int t = i; while (t) { if (t%10
== 2) cnt++; t /= 10; } } printf("%dn", cnt); return 0; } 1097 画矩形
#include using namespace std; int main() { int h, w, flag; char ch;
scanf("%d %d %c %d", &h, &w, &ch, &flag); for (int
j = 0; j < w; j++) printf("%c", ch); printf("n"); for (int i =
1; i < h - 1; i++) { printf("%c", ch); for (int j = 1; j < w
- 1; j++) { if (flag) printf("%c", ch); else printf(" "); }
printf("%cn", ch); } for (int j = 0; j < w; j++) printf("%c",
ch); return 0; } 1098 质因数分解 #include using namespace std; int
main() { int n; scanf("%d", &n); for (int i = 2; i <= n/i;
i++) { if (n % i == 0) { printf("%d", n / i); break; } } return 0;
} 1099 第n小的质数 #include using namespace std; int main() { int n;
scanf("%d", &n); int i, j; for (i = 2, j = 0; j < n; i++) {
bool flag = true; for (int k = 2; k <= i/k; k++) { if (i%k == 0)
{ flag = false; break; } } if (flag) j++; } printf("%d", i - 1);
return 0; } 1100 金币 #include using namespace std; int main() { int
n, sum=0, day=0; scanf("%d", &n); for (int i = 1; ; i++) { for
(int j = 1; j <= i; j++) { day++; if (day > n) {
printf("%dn", sum); return 0; } sum += i; } } return 0; } 1101
不定方程求解 #include using namespace std; int main() { int a, b, c, cnt
= 0; scanf("%d%d%d", &a, &b, &c); for (int x = 0; x
<= c; x++) { for (int y = 0; y <= c; y++) { if (a*x + b*y ==
c) cnt++; } } printf("%dn", cnt); return 0; }
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com