信息学奥赛一本通 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