1.5編程基礎之循環控制(45題)
01:求平均年齡
#include<iostream> using namespace std; int main() { int n; float sum=0; cin>>n; for(int i=0;i<n;++i) { int temp; cin>>temp; sum+=temp; } printf("%.2f",sum/n); return 0; }
02:財務管理
#include<iostream> using namespace std; int main() { float sum=0; float temp; for(int i=0;i<12;++i) { cin>>temp; sum+=temp; } printf("$%.2f",sum/12); return 0; }
03:均值
#include<iostream> using namespace std; int main() { int n; double sum=0,temp; cin>>n; for(int i=0;i<n;++i) { cin>>temp; sum+=temp; } printf("%.4f",sum/(double)n); return 0; }
04:求整數的和與均值
#include<iostream> using namespace std; int main() { int n; double sum=0,temp; cin>>n; for(int i=0;i<n;++i) { cin>>temp; sum+=temp; } printf("%.0f %.5f",sum,sum/(double)n); return 0; }
05:最高的分數
#include<iostream> using namespace std; int main() { int n; int max,temp; cin>>n; cin>>max; for(int i=1;i<n;++i) { cin>>temp; if(max<temp)max=temp; } printf("%d",max); return 0; }
06:整數序列的元素最大跨度值
#include<iostream> using namespace std; int main() { int m; int max,min,temp; cin>>m; cin>>max; min=max; for(int i=1;i<m;++i) { cin>>temp; if(max<temp)max=temp; if(min>temp)min=temp; } printf("%d",max-min); return 0; }
07:奧運獎牌計數
#include<iostream> using namespace std; int main() { int m; int j,y,t; int a=0,b=0,c=0; cin>>m; for(int i=0;i<m;++i) { cin>>j>>y>>t; a+=j; b+=y; c+=t; } printf("%d %d %d %d",a,b,c,a+b+c); return 0; }
08:多邊形內角和
#include<iostream> using namespace std; int main() { int n; int j,v; int a=0,b=0,c=0; cin>>n; v=(n-2)*180; for(int i=0;i<n-1;++i) { cin>>j; v-=j; } printf("%d",v); return 0; }
09:奇數求和
#include<iostream> using namespace std; int main() { int n,m,sum=0; cin>>m>>n; for(int i=m;i<=n;++i) { if(i%2) { sum+=i; } } cout<<sum; return 0; }
10:滿足條件的數累加
#include<iostream> using namespace std; int main() { int n,m,sum=0; cin>>m>>n; for(int i=m;i<=n;++i) { if(!(i%17)) { sum+=i; } } cout<<sum; return 0; }
11:整數的個數
#include<iostream> using namespace std; int main() { int k,temp,one=0,five=0,ten=0; cin>>k; for(int i=0;i<k;++i) { cin>>temp; if(temp==1)++one; if(temp==5)++five; if(temp==10)++ten; } cout<<one<<endl<<five<<endl<<ten<<endl; return 0; }
12:與指定數字相同的數的個數
#include<iostream> using namespace std; int main() { int n,m,temp,one=0; cin>>n>>m; for(int i=0;i<n;++i) { cin>>temp; if(temp==m)++one; } cout<<one; return 0; }
13:乘方計算
#include<iostream> using namespace std; int main() { long long a,n,temp=1; cin>>a>>n; for(int i=0;i<n;++i) { temp*=a; } cout<<temp; return 0; }
14:人口增長問題
#include<iostream> #include<cmath> using namespace std; int main() { double x,n,sum=0; cin>>x>>n; sum=x*pow(1+0.1/100.0,n); printf("%.4f",sum); return 0; }
15:銀行利息
#include<iostream> #include<cmath> using namespace std; int main() { double r,m,y,sum; cin>>r>>m>>y; r=r/100.0; sum=m*pow(1+r,y); printf("%d",(int)sum); return 0; }
16:買房子
#include<iostream> #include<cmath> using namespace std; int main() { double n,k,sum=200,cxy; cin>>n>>k; k/=100.0; cxy=n; int count=1,flag=0; while(cxy<sum) { sum*=(1+k); cxy+=n; ++count; if(count>20) { flag=1;break; } } if(flag) { cout<<"Impossible"; } else { printf("%d",count); } return 0; }
17:菲波那契數列
#include<iostream> #include<cmath> using namespace std; int main() { int k; int o[50]={}; o[1]=1,o[2]=1; cin>>k; for(int i=3;i<=k;++i) { o[i]=o[i-1]+o[i-2]; } cout<<o[k]; return 0; }
18:雞尾酒療法
#include<iostream> #include<cmath> using namespace std; int main() { int n;cin>>n; double a,b; double x,y; cin>>a>>b; x=b/a; for(int i=1;i<n-1;++i) { cin>>a>>b; y=b/a; if((y-x)>0.05) { cout<<"better"; } else if((x-y)>0.05) { cout<<"worse"; } else { cout<<"same"; } cout<<endl; } cin>>a>>b; y=b/a; if((y-x)>0.05) { cout<<"better"; } else if((x-y)>0.05) { cout<<"worse"; } else { cout<<"same"; } return 0; }
19:救援
#include<iostream> #include<cmath> using namespace std; int main() { int n;cin>>n; double x,y,z; double sum=0; for(int i=0;i<n;++i) { cin>>x>>y>>z; sum+=sqrt(x*x+y*y)/50.0; sum+=sqrt(x*x+y*y)/50.0; sum+=z*1.5; } printf("%.0f",sum+0.5); return 0; }
20:球彈跳高度的計算
#include<iostream> #include<cmath> using namespace std; int main() { double h,ten; double high=0;cin>>h; ten=h*pow(0.5,10); high=h; for(int i=1;i<10;++i) { h/=2.0; high+=h; high+=h; } printf("%g\n",high); printf("%g",ten+0.00000005); return 0; }
21:角谷猜想
#include<iostream> #include<cmath> #include <limits> using namespace std; int main() { long long n; cin>>n; while(1) { if(n==1)break; if(n%2) { cout<<n<<"*3+1="; n=n*3+1; } else { cout<<n<<"/2="; n=n/2; } cout<<n<<endl; } cout<<"End"; // cout << "最大值:" << (numeric_limits<long long>::max)(); return 0; } /* 這題要B一下,一開始用int老是超時改成long long過了 int 最大:2,47,483,648>2,000,000,但是一旦*3就超了 long long最大:92,23,372,036,854,775,807 */
逛了一波博客回來繼續擼
22:津津的儲蓄計划
#include<iostream> #include<cmath> using namespace std; int main() { int temp,flag=0; double save=0; int jj=0; for(int i=1;i<=12;++i) { cin>>temp; jj+=300; jj-=temp; if(jj>=300) { save+=300; jj-=300; } else if(jj>=200) { save+=200; jj-=200; } else if(jj>=100) { save+=100; jj-=100; } else if(jj<0) { flag=1; cout<<-1*i; break; } } if(!flag) { printf("%.0f",save*1.2+jj); } return 0; }
23:葯房管理
#include<iostream> #include<cmath> using namespace std; int main() { int m,n,num,c=0; cin>>m>>n; for(int i=0;i<n;++i) { cin>>num; if(m>=num) { m-=num; } else { ++c; } } cout<<c; return 0; }
24:正常血壓
#include<iostream> #include<cmath> using namespace std; int main() { int n,a,b,c=0,max=0; cin>>n; for(int i=0;i<n;++i) { cin>>a>>b; if(90<=a&&a<=140&&60<=b&&b<=90) { ++c; } else { c=0; } if(max<c)max=c; } cout<<max; return 0; }
25:求特殊自然數
找答案: #include<iostream> #include<cmath> using namespace std; int main() { for(int i=0;i<7;++i) { for(int j=0;j<7;++j) { for(int k=0;k<7;++k) { if((49*i+7*j+k)==(81*k+9*j+i)) { cout<<(49*i+7*j+k)<<endl; cout<<i<<j<<k<<endl; cout<<k<<j<<i<<endl; cout<<endl; } } } } return 0; } 交的時候: #include<iostream> #include<cmath> using namespace std; int main() { cout<<248<<endl; cout<<503<<endl; cout<<305<<endl; return 0; }
26:統計滿足條件的4位數個數
#include<iostream> #include<string> using namespace std; int main() { int n,c=0;cin>>n; string a; for(int i=0;i<n;++i) { cin>>a; if((a[3]-'0')-(a[2]-'0')-(a[1]-'0')-(a[0]-'0')>0)++c; } cout<<c; return 0; }
27:級數求和
#include<iostream> #include<string> using namespace std; int main() { double i; double k; cin>>k; double sn=0; for(i=1;!(sn>k);++i) { sn+=1/i; } cout<<i-1; return 0; }
28:分離整數的各個數位
#include<iostream> #include<string> using namespace std; int main() { long long n; cin>>n; while(n) { cout<<n%10<<" "; n/=10; } return 0; }
29:數字反轉
#include<iostream> #include<string> using namespace std; int main() { long long n,ne=0; cin>>n; while(n) { ne+=n%10; ne*=10; n/=10; } cout<<ne/10; return 0; }
30:含k個3的數
#include<iostream> #include<string> using namespace std; int main() { int m,k,s,t=0,flag=0; cin>>m>>k; s=m%19; if(!s) { s=m; while(s) { if(s%10==3)++t; s/=10; } if(t==k)flag=1; } if(flag) { cout<<"YES"; } else { cout<<"NO"; } return 0; }
31:開關燈
#include<iostream> #include<string> using namespace std; int main() { int a[5001]={},n,m; cin>>n>>m; //0關閉,1打開 for(int j=1;2*j<=n;++j) { a[2*j]=1;//打開 } for(int i=3;i<=m;++i) { for(int j=1;i*j<=n;++j) { if(a[i*j]==1) { a[i*j]=0; } else { a[i*j]=1; } } } int ii=1; for(;ii<=n;++ii) { if(!a[ii]) { cout<<ii;break; } } ++ii; for(;ii<=n;++ii) { if(!a[ii]) { cout<<","<<ii; } } return 0; }
32:求分數序列和
#include<iostream> #include<string> using namespace std; int main() { int n;cin>>n; double t,a=2,b=1,sum=2; for(int i=1;i<n;++i) { t=a; a=a+b; b=t; sum+=a/b; } printf("%.4f",sum); return 0; }
今天就到這兒,留了點尾巴后天再收
33:計算分數加減表達式的值
#include<iostream> #include<string> using namespace std; int main() { int n;cin>>n; double sum=0; for(int i=1;i<=n;++i) { if(i%2) { sum+=1.0/i; } else { sum+=-1.0/i; } } printf("%.4f",sum); return 0; }
34:求階乘的和
#include<iostream> #include<string> using namespace std; int main() { int n;cin>>n; int t=1,sum=0; for(int i=1;i<=n;++i) { t*=i; sum+=t; } printf("%d",sum); return 0; }
35:求出e的值
#include<iostream> #include<string> using namespace std; int main() { int n;cin>>n; double t=1,sum=1; for(int i=1;i<=n;++i) { t*=i; sum+=1.0/t; } printf("%.10f",sum); return 0; }
36:計算多項式的值
#include<iostream> #include<cmath> using namespace std; int main() { int n; float x; cin>>x>>n; float t=1,sum=1; for(int i=1;i<=n;++i) { sum+=pow(x,i); } printf("%.2f",sum); return 0; }
37: 雇佣兵
#include<iostream> #include<cmath> using namespace std; int main() { int n,m,x; int a=0,b=0,c=0; cin>>m>>n>>x; b=n; for(int i=x-1;i>=0&&m>=b;--i) { a+=b; // cout<<">>體力="<<a<<"戰斗力="<<b<<"能量元素="<<i<<endl; if(a>=m) { b+=m/b; a=0; } // cout<<"<<體力="<<a<<"戰斗力="<<b<<"能量元素="<<i<<endl; } cout<<b; return 0; }
38:計算多項式的導函數【這題氣死我了,他沒有外循環,給的是三個不同情況下的樣例!!!】
#include<iostream> #include<cmath> using namespace std; int main() { int n,m,x,j; int a=0,b=0,c=0; // cin>>n; // for(int i=0;i<n;++i) // { cin>>m;//輸入最高次 if(m==0) { cin>>x; cout<<0<<endl; } else { for(j=m;j>0;--j) { cin>>x; if(j==m) { cout<<x*m; } else { cout<<" "<<x*j; } } cin>>x; cout<<endl; } // } return 0; }
39: 與7無關的數
#include<iostream> #include<cmath> using namespace std; bool function(int i) { while(i) { if(i%10==7) { return true; } i/=10; } return false; } int main() { int n,x; long long sum=0; cin>>n; for(int i=1;i<=n;++i) { if(!(i%7==0||function(i))) { sum+=i*i; } } cout<<sum; return 0; }
40:數1的個數
#include<iostream> #include<cmath> using namespace std; void function(int i,int &count) { while(i) { if(i%10==1) { ++count; } i/=10; } } int main() { int n,x; int sum=0; cin>>n; for(int i=1;i<=n;++i) { function(i,sum); } cout<<sum; return 0; }
41:數字統計
#include<iostream> #include<cmath> using namespace std; void function(int i,int &count) { while(i) { if(i%10==2) { ++count; } i/=10; } } int main() { int L,R; int sum=0; cin>>L>>R; for(int i=L;i<=R;++i) { function(i,sum); } cout<<sum; return 0; }
42:畫矩形
#include<iostream> #include<cmath> using namespace std; int main() { int w,h;cin>>h>>w; char tag;cin>>tag; int c;cin>>c; if(c) { for(int i=0;i<h;++i) { for(int ii=0;ii<w;++ii) { cout<<tag; } cout<<endl; } } else { if(w==1&&h==1) { cout<<tag; } else { for(int i=0;i<w;++i)cout<<tag; cout<<endl; for(int i=1;i<h-1;++i) { cout<<tag; for(int ii=1;ii<w-1;++ii) { cout<<" "; } cout<<tag<<endl; } for(int ii=0;ii<w;++ii) { cout<<tag; } } } return 0; }
43:質因數分解
#include<bits/stdc++.h> using namespace std; int main() { int a;cin>>a; for(int i=2; i<=sqrt(a); i++) { if(a%i==0) { cout<<a/i; } } }
44:第n小的質數【純屬套模板】
#include<bits/stdc++.h> using namespace std; int a[10000000],i,j,p[10001],t=1,n; int main() { cin>>n; a[1]=1; for(i=2;i<=1000000;i++) { if(!a[i]) { p[t]=i; if(t==n) { cout<<p[n];return 0; } t++; } for(j=1;j<=t&&i*p[j]<=1000000;j++) { a[i*p[j]]=1; if(i%p[j]==0) break; } } return 0; }
45:金幣【找規律的題】
#include<iostream> #include<cmath> #define MAX 10000 using namespace std; int main() { int n,day=0,sum=0;cin>>n; for(int j=1;day<=n;++j) { day+=j; // cout<<"day:"<<day-j<<"+"<<j<<"="<<day<<endl; if(n>=day) { sum+=j*j; } else { sum+=j*(n-day+j); } } cout<<sum; return 0; }