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