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;
}
