P5718 【深基4.例2】找最小值题目描述给出 n 和 n 个整数 ai求这 n 个整数中最小值是什么。输入格式第一行输入一个正整数 n表示数字个数。第二行输入 n 个非负整数表示 a1,a2…an以空格隔开。输出格式输出一个非负整数表示这 n 个非负整数中的最小值。输入输出样例输入 #1复制5 5 7 4 2 6输出 #1复制2说明/提示数据保证n≤100 且 0≤ai≤1000。实现代码#includebits/stdc.h using namespace std; void solve(){ int a[110]; int n; cinn; for(int i0;in;i){ cina[i]; } sort(a,an); couta[0]; } int main(){ int T1; while(T--){ solve(); } return 0; }P5719 【深基4.例3】分类平均题目描述给定 n 和 k将从 1 到 n 之间的所有正整数可以分为两类A 类数可以被 k 整除也就是说是 k 的倍数而 B 类数不能。请输出这两类数的平均数精确到小数点后 1 位用空格隔开。数据保证两类数的个数都不会是 0。输入格式输入两个正整数 n 与 k。输出格式输出一行两个实数分别表示 A 类数与 B 类数的平均数。精确到小数点后一位。输入输出样例输入 #1复制100 16输出 #1复制56.0 50.1说明/提示数据保证1≤n≤100001≤k≤100。实现代码#includebits/stdc.h using namespace std; int main(){ int n,k; cinnk; double sum0,cnt0, SUM0,CNT0; for(int i1;in;i){ if(i%k0){ sum; cnti; } else SUM,CNTi; } printf(%.1lf %.1lf,cnt/sum,CNT/SUM); return 0; }P5720 【深基4.例4】一尺之棰题目描述《庄子》中说到“一尺之棰日取其半万世不竭”。第一天有一根长度为 a 的木棍从第二天开始每天都要将这根木棍锯掉一半每次除 2向下取整。第几天的时候木棍的长度会变为 1输入格式输入一个正整数 a表示木棍长度。输出格式输出一个正整数表示要第几天的时候木棍长度会变为 1。输入输出样例输入 #1复制100输出 #1复制7说明/提示数据保证1≤a≤109。实现代码#includebits/stdc.h using namespace std; int main(){ int n,sum0; cinn; while(n!1){ nn/2; sum; } coutsum1; return 0; }P5721 【深基4.例6】数字直角三角形题目描述给出 n请输出一个直角边长度是 n 的数字直角三角形。所有数字都是 2 位组成的如果没有 2 位则加上前导 0。输入格式输入一个正整数 n。输出格式输出如题目要求的数字直角三角形。输入输出样例输入 #1复制5输出 #1复制0102030405 06070809 101112 1314 15说明/提示数据保证1≤n≤13。实现代码#includebits/stdc.h using namespace std; int main(){ int n; cinn; int cnt0; for(int i1;in;i){ for(int ji;jn;j){ cnt; if(cnt10){ cout0cnt; } else coutcnt; } coutendl; } return 0; }P1009 [NOIP 1998 普及组] 阶乘之和用高精度计算出 S1!2!3!⋯n!n≤50。其中!表示阶乘定义为 n!n×(n−1)×(n−2)×⋯×1。例如5!5×4×3×2×1120。输入格式一个正整数 n。输出格式一个正整数 S表示计算结果。输入输出样例输入 #1复制3输出 #1复制9说明/提示【数据范围】对于 100% 的数据1≤n≤50。【其他说明】注《深入浅出基础篇》中使用本题作为例题但是其数据范围只有 n≤20使用书中的代码无法通过本题。如果希望通过本题请继续学习第八章高精度的知识。NOIP1998 普及组 第二题实现代码#includebits/stdc.h using namespace std; #define int long long const int N111; int a[N]{0},s[N]{0}; int n; void fun(int x){ int t0; for(int i100;i1;i--){ a[i]a[i]*xt; ta[i]/10; a[i]a[i]%10; } } void f(){ int t0; for(int i100;i1;i--){ s[i]a[i]t; ts[i]/10; s[i]s[i]%10; } } signed main(){ cinn; a[100]1; for(int i1;in;i){ fun(i); f(); } for(int i1;i100;i){ if(s[i]){ for(int ji;j100;j){ couts[j]; } return 0; } } return 0; }P1980 [NOIP 2013 普及组] 计数问题题目背景NOIP2013 普及组 T1题目描述试计算在区间 1 到 n 的所有整数中数字 x0≤x≤9共出现了多少次例如在 1 到 11 中即在 1,2,3,4,5,6,7,8,9,10,11 中数字 1 出现了 4 次。输入格式2 个整数 n,x之间用一个空格隔开。输出格式1 个整数表示 x 出现的次数。输入输出样例输入 #1复制11 1输出 #1复制4说明/提示对于 100% 的数据1≤n≤1060≤x≤9。实现代码#includebits/stdc.h using namespace std; void solve(){ int a[110]; int n; cinn; for(int i0;in;i){ cina[i]; } sort(a,an); couta[0]; } int main(){ int T1; while(T--){ solve(); } return 0; }P1035 [NOIP 2002 普及组] 级数求和题目描述已知Sn12131…n1。显然对于任意一个整数 k当 n 足够大的时候Snk。现给出一个整数 k要求计算出一个最小的 n使得 Snk。输入格式一个正整数 k。输出格式一个正整数 n。输入输出样例输入 #1复制1输出 #1复制2说明/提示【数据范围】对于 100% 的数据1≤k≤15。【题目来源】NOIP 2002 普及组第一题实现代码#includebits/stdc.h using namespace std; int main(){ int n; cinn; double sum0; for(int i1;;i){ sum1.0/i; if(sumn){ couti; return 0; } } return 0; }
洛谷-入门3-循环结构1
P5718 【深基4.例2】找最小值题目描述给出 n 和 n 个整数 ai求这 n 个整数中最小值是什么。输入格式第一行输入一个正整数 n表示数字个数。第二行输入 n 个非负整数表示 a1,a2…an以空格隔开。输出格式输出一个非负整数表示这 n 个非负整数中的最小值。输入输出样例输入 #1复制5 5 7 4 2 6输出 #1复制2说明/提示数据保证n≤100 且 0≤ai≤1000。实现代码#includebits/stdc.h using namespace std; void solve(){ int a[110]; int n; cinn; for(int i0;in;i){ cina[i]; } sort(a,an); couta[0]; } int main(){ int T1; while(T--){ solve(); } return 0; }P5719 【深基4.例3】分类平均题目描述给定 n 和 k将从 1 到 n 之间的所有正整数可以分为两类A 类数可以被 k 整除也就是说是 k 的倍数而 B 类数不能。请输出这两类数的平均数精确到小数点后 1 位用空格隔开。数据保证两类数的个数都不会是 0。输入格式输入两个正整数 n 与 k。输出格式输出一行两个实数分别表示 A 类数与 B 类数的平均数。精确到小数点后一位。输入输出样例输入 #1复制100 16输出 #1复制56.0 50.1说明/提示数据保证1≤n≤100001≤k≤100。实现代码#includebits/stdc.h using namespace std; int main(){ int n,k; cinnk; double sum0,cnt0, SUM0,CNT0; for(int i1;in;i){ if(i%k0){ sum; cnti; } else SUM,CNTi; } printf(%.1lf %.1lf,cnt/sum,CNT/SUM); return 0; }P5720 【深基4.例4】一尺之棰题目描述《庄子》中说到“一尺之棰日取其半万世不竭”。第一天有一根长度为 a 的木棍从第二天开始每天都要将这根木棍锯掉一半每次除 2向下取整。第几天的时候木棍的长度会变为 1输入格式输入一个正整数 a表示木棍长度。输出格式输出一个正整数表示要第几天的时候木棍长度会变为 1。输入输出样例输入 #1复制100输出 #1复制7说明/提示数据保证1≤a≤109。实现代码#includebits/stdc.h using namespace std; int main(){ int n,sum0; cinn; while(n!1){ nn/2; sum; } coutsum1; return 0; }P5721 【深基4.例6】数字直角三角形题目描述给出 n请输出一个直角边长度是 n 的数字直角三角形。所有数字都是 2 位组成的如果没有 2 位则加上前导 0。输入格式输入一个正整数 n。输出格式输出如题目要求的数字直角三角形。输入输出样例输入 #1复制5输出 #1复制0102030405 06070809 101112 1314 15说明/提示数据保证1≤n≤13。实现代码#includebits/stdc.h using namespace std; int main(){ int n; cinn; int cnt0; for(int i1;in;i){ for(int ji;jn;j){ cnt; if(cnt10){ cout0cnt; } else coutcnt; } coutendl; } return 0; }P1009 [NOIP 1998 普及组] 阶乘之和用高精度计算出 S1!2!3!⋯n!n≤50。其中!表示阶乘定义为 n!n×(n−1)×(n−2)×⋯×1。例如5!5×4×3×2×1120。输入格式一个正整数 n。输出格式一个正整数 S表示计算结果。输入输出样例输入 #1复制3输出 #1复制9说明/提示【数据范围】对于 100% 的数据1≤n≤50。【其他说明】注《深入浅出基础篇》中使用本题作为例题但是其数据范围只有 n≤20使用书中的代码无法通过本题。如果希望通过本题请继续学习第八章高精度的知识。NOIP1998 普及组 第二题实现代码#includebits/stdc.h using namespace std; #define int long long const int N111; int a[N]{0},s[N]{0}; int n; void fun(int x){ int t0; for(int i100;i1;i--){ a[i]a[i]*xt; ta[i]/10; a[i]a[i]%10; } } void f(){ int t0; for(int i100;i1;i--){ s[i]a[i]t; ts[i]/10; s[i]s[i]%10; } } signed main(){ cinn; a[100]1; for(int i1;in;i){ fun(i); f(); } for(int i1;i100;i){ if(s[i]){ for(int ji;j100;j){ couts[j]; } return 0; } } return 0; }P1980 [NOIP 2013 普及组] 计数问题题目背景NOIP2013 普及组 T1题目描述试计算在区间 1 到 n 的所有整数中数字 x0≤x≤9共出现了多少次例如在 1 到 11 中即在 1,2,3,4,5,6,7,8,9,10,11 中数字 1 出现了 4 次。输入格式2 个整数 n,x之间用一个空格隔开。输出格式1 个整数表示 x 出现的次数。输入输出样例输入 #1复制11 1输出 #1复制4说明/提示对于 100% 的数据1≤n≤1060≤x≤9。实现代码#includebits/stdc.h using namespace std; void solve(){ int a[110]; int n; cinn; for(int i0;in;i){ cina[i]; } sort(a,an); couta[0]; } int main(){ int T1; while(T--){ solve(); } return 0; }P1035 [NOIP 2002 普及组] 级数求和题目描述已知Sn12131…n1。显然对于任意一个整数 k当 n 足够大的时候Snk。现给出一个整数 k要求计算出一个最小的 n使得 Snk。输入格式一个正整数 k。输出格式一个正整数 n。输入输出样例输入 #1复制1输出 #1复制2说明/提示【数据范围】对于 100% 的数据1≤k≤15。【题目来源】NOIP 2002 普及组第一题实现代码#includebits/stdc.h using namespace std; int main(){ int n; cinn; double sum0; for(int i1;;i){ sum1.0/i; if(sumn){ couti; return 0; } } return 0; }