东华复试OJ

文章包含一系列用C++编写的算法实现,包括累加式、约瑟夫环问题、整除的尾数计算、回文质数检测、汽水瓶问题、阶乘非零位计算、算菜价、水果价格统计、奇数乘积以及最晚和最早时间的确定。这些程序展示了循环、条件判断和数学逻辑在编程中的应用。
摘要由CSDN通过智能技术生成

21、累加式

#include <iostream>
using namespace std;

int main(){
	int n;
	while(cin>>n){
		if(n==1){
			cout<<1<<endl;
		}else{
			cout<<1;
			for(int i=2;i<=n;i++){
				cout<<"+"<<i;
			}
			for(int j=n-1;j>=1;j--){
				cout<<"+"<<j;
			}
			cout<<endl;
		}	
	}
	return 0;
}

22、约夫瑟环2(难,先空着)

23、整除的尾数

#include <iostream>
using namespace std;

int main(){
	int n,a,b,sum,count;
	while(cin>>n){
		for(int k=0;k<n;k++){
			cin>>a>>b;
			count=0;
			for(int r=0;r<=9;r++){
				for(int s=0;s<=9;s++){
					sum=100*a+10*r+s;
					if(sum%b==0){
						if(count>=1){
							cout<<" ";
						}
						cout<<r<<s;
						count++;
					}
				}
			}
			cout<<endl;
		}
	}
	return 0;
}

24、回文质数(OJ平台出现'TLE',VC正常)

#include <iostream>
using namespace std;

int Iszhishu(int n){
	int flag=0;
	for(int i=2;i<n;i++){
		if(n%i==0){
			flag=1;
			break;
		}
	}
	if(flag==1)
		return 0;
	else
		return 1;
}

int Ishuiwen(int n){
	int stack[100000]={0};
	int top=-1;
	int temp=0;
	while(n>0){
		stack[++top]=n%10;
		n=n/10;
	}
	temp=top;
	for(int i=0,j=temp;i<top/2,j>temp/2;i++,j--){
		if(stack[j]!=stack[i]){
			return 0;
		}
	}
	return 1;
}

int main(){
	int a,b;
	while(cin>>a>>b){
		for(int k=a;k<=b;k++){
			if(Iszhishu(k)==1&&Ishuiwen(k)==1){
				cout<<k<<endl;
			}
		}
		cout<<endl;
	}
	return 0;
}

25、汽水瓶

#include <iostream>
using namespace std;

int main(){
	int n,count;
	int x,y;
	while(cin>>n){
		count=0;
		while(n>=3){
			x=n/3;
			y=n%3;
			n=x+y;
			count+=x;
		}
		if(n==2)
			cout<<count+1<<endl;
		else if(n==0)
			break;
		else
			cout<<count<<endl;
	}
	return 0;
}

26、阶乘最后的非0位(注意数据过大时要取余!)

#include <iostream>
using namespace std;

int main(){
	int n,k;
	long sum;
	while(cin>>n){
		sum=1;
		k=0;
		for(int i=1;i<=n;i++){
			sum*=i;
			while(sum%10==0)
				sum/=10;
			sum%=10000;        //为避免数据过大,要对10000取余
		}
		k=sum%10;
		cout<<k<<endl;
	}
	return 0;
}

27、算菜价

#include <iostream>
using namespace std;

int main(){
	int n,num;
	char name[10]={'\0'};      //字符数组的定义
	double weight,price,sum;

	while(cin>>n){
		for(int i=0;i<n;i++){
			sum=0;
			cin>>num;		
			for(int j=0;j<num;j++){
				cin>>name>>weight>>price;
				sum+=(weight*price);
			}
			printf("%.1f\n",sum);
		}
		cout<<endl;
	}
	return 0;
}

28、水果价格

#include <iostream>
using namespace std;

int main(){
	int m,sum;
	char d;
	float g;
    //double的精度高于float,如果该题中使用float,会出现数值错误
	double weight[4],price[4];      
	double sum_weight,sum_price;	

	while(cin>>m){
		sum_weight=sum_price=0;
		for(int i=0;i<4;i++){
			weight[i]=0;
			price[i]=0;
		}
	
		for(int j=0;j<m;j++){
			cin>>d>>g;
			switch(d){
				case 'a':
					weight[0]+=g;
					price[0]+=1.5*g;
					break;
				case 'o':
					weight[1]+=g;
					price[1]+=1.4*g;
					break;
				case 'b':
					weight[2]+=g;
					price[2]+=1.48*g;
					break;
				case 'p':
					weight[3]+=g;
					price[3]+=1.08*g;
					break;
				default:
					break;
			}
		}

		for(int k=0;k<4;k++){
			sum_weight+=weight[k];
			sum_price+=price[k];
		}

		printf("       apple  orange banana pineapple sum\n");
		printf("price  %-7.2f%-7.2f%-7.2f%-10.2f%-7.2f\n",price[0],price[1],price[2],price[3],sum_price);
		printf("weight %-7.2f%-7.2f%-7.2f%-10.2f%-7.2f\n",weight[0],weight[1],weight[2],weight[3],sum_weight);
		cout<<endl;
	}
	return 0;
}

29、求奇数的乘积

#include <iostream>
using namespace std;

int main(){
	int n,c,sum;
	while(cin>>n){
		sum=1;
		while(n--){
			cin>>c;
			if(c%2==1)
				sum*=c;
		}
		cout<<sum<<endl;
	}
	return 0;
}

30、求最晚和最早时间

#include <iostream>
using namespace std;

int main(){
	int n;
	int year,month,day;
	int maxy,maxm,maxd,miny,minm,mind;
	while(cin>>n){
		cin>>year>>month>>day;
		maxy=miny=year;
		maxm=minm=month;
		maxd=mind=day;

		for(int i=2;i<=n;i++){
			cin>>year>>month>>day;	
			if(year>maxy){
				maxy=year;
				maxm=month;
				maxd=day;
			}else if(year==maxy){
				if(month>maxm){
					maxy=year;
					maxm=month;
					maxd=day;
				}else if(month==maxm){
					if(day>maxd){
						maxy=year;
						maxm=month;
						maxd=day;
					}
				}
			}

			if(year<miny){
				miny=year;
				minm=month;
				mind=day;
			}else if(year==miny){
				if(month<minm){
					miny=year;
					minm=month;
					mind=day;
				}else if(month==minm){
					if(day<mind){
						miny=year;
						minm=month;
						mind=day;
					}
				}
			}
		}
		cout<<maxy<<" "<<maxm<<" "<<maxd<<endl;
		cout<<miny<<" "<<minm<<" "<<mind<<endl;
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值