周六1900C++班级-2022-11-26-多重循环练习
比赛链接
1001 : C语言实验题――素数
#include<bits/stdc++.h> using namespace std; int main() { int ans = 0; //记录100-200之间素数的个数 for(int n=100;n<=200;n++) //根据题目意思,循环n从100到200 { int sum = 0; //设定sum为0,用来求当前n这个数的因子个数 for(int i=1;i<=n;i++) //循环1到n来判断数字n有多少个因子 { if(n%i==0) //如果n%i==0证明i是n的因子 sum++; } if(sum==2){ //刚好只有2个因子 ans++; //素数个数+1 } } cout<<ans<<endl; //输出素数个数 for(int n=100;n<=200;n++) //根据题目意思,循环n从100到200 { int sum = 0; //设定sum为0,用来求当前n这个数的因子个数 for(int i=1;i<=n;i++) //循环1到n来判断数字n有多少个因子 { if(n%i==0) //如果n%i==0证明i是n的因子 sum++; } if(sum==2){ //刚好只有2个因子 cout<<n; ans--; if(ans>0)cout<<" "; } } return 0; }
1002 : n钱买百鸡
#include<bits/stdc++.h> using namespace std; int main() { //n钱买百鸡 int n; cin>>n; for(int i=0;i<=n/5;i++) //公鸡 { for(int j=0;j<=n/3;j++) //母鸡 { for(int k=0;k<=3*n;k+=3) //小鸡 { if(5*i+3*j+k/3==n && i+j+k==100) { cout<<i<<" "<<j<<" "<<k<<endl; } } } } return 0; }
1003 : 零钱兑换
#include<bits/stdc++.h> using namespace std; int main() { //兑换零钱 int n,sum = 0; cin>>n; for(int i=0;i<=n/5;i++) { for(int j=0;j<=n/10;j++) { for(int k=0;k<=n/20;k++) { if(5*i+10*j+20*k==n) sum++; } } } cout<<sum; return 0; }
1004 : 寻找完全数
#include<bits/stdc++.h> using namespace std; int main() { //寻找完美数 int n; cin>>n; for(int i=2;i<=n;i++) { int sum = 0; //用来计算因子数和 for(int j=1;j<i;j++) if(i%j==0) sum+=j; if(sum==i) cout<<i<<endl; } return 0; }
1005 : 明明的幸运数
#include<bits/stdc++.h> using namespace std; int main() {//明明的幸运数 int n,sum=0; cin>>n; for(int i=1;i<=n;i++) { if(i%3==0)sum++; else{ int m = i; while(m>0)//分离每位数 { if(m%10==3) //通过%10来判断m的个位是否是3 { sum++; break; } m/=10; //舍弃个位数 } } } cout<<sum; return 0; }
1006 : 数字游戏
#include<bits/stdc++.h> using namespace std; int main() { int n,f = 0; //f等于0默认yuyu不用拍手 cin>>n; for(int i=n;i<=1000;i+=3) { int m = i; while(m>0) { if(m%10==4 || m%10==7){ f = 1; //标记着yuyu需要拍手 cout<<i<<endl; break; } m/=10; } } if(f==0)cout<<"Smile"; return 0; }
1007 : 含k个3的数
#include<bits/stdc++.h> using namespace std; int main() { int m,k; cin>>m>>k; int sum = 0; //用来计算是否有k个3 int f1 = 0,f2 = 0; //f1判断是否是被19整除,f2判断是否有k个3 if(m%19==0) f1 = 1; while(m>0) { if(m%10==3)sum++; //m%10判断个位数是否为3 m/=10; //整除10去掉个位数 } if(sum==k)f2 = 1; if(f1==1 && f2==1)cout<<"YES"; else cout<<"NO"; return 0; }
1008 : 素数判断
#include<bits/stdc++.h> using namespace std; int main() { int n; while(cin>>n) { int sum=0; for(int i=1;i<=n;i++) { if(n%i==0) sum++; } if(sum==2) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }