noi寒假刷題之旅_ 1.5編程基礎之循環控制(45題)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM