这一部分内容比较简单 直接把代码发上来 不想自己写的同学可以直接抱走~
练习题:a+b 问题
#include<bits/stdc++.h> using namespace std;int main() {int n,x,y;cin>>n;while(n--){cin>>x>>y;cout<<x+y<<endl;} }
练习题:斐波那契数列
#include<bits/stdc++.h> using namespace std;int main() {int n;cin>>n;int a=1,b=1,c,i;if(n>2){for(i=3;i<=n;i++){c=(a+b)%1000000007 ;a=b;b=c;}cout<<c<<endl;}elsecout<<1<<endl; }
练习题:矩阵旋转
#include<bits/stdc++.h> using namespace std;int main() {int n,m,i,j,a[205][205];cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++){cin>>a[i][j];}for(i=1;i<=m;i++){cout<<a[n][i];for(j=n-1;j>=1;j--){cout<<' '<<a[j][i];}cout<<endl;}}
练习题:最大子阵
#include<bits/stdc++.h> using namespace std; int n,m,sums,anss,i,j,a[55][55],s[55][55],k; int main() {cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++){cin>>a[i][j];s[i][j]=s[i-1][j]+a[i][j];}anss=-0x7ffffff;for(i=1;i<=n;i++)for(j=i;j<=n;j++){sums=0;for(k=1;k<=m;k++){if(sums>=0)sums+=s[j][k]-s[i-1][k];elsesums=s[j][k]-s[i-1][k];if(sums>anss)anss=sums;}}cout<<anss<<endl; }
练习题:四平方和
#include<bits/stdc++.h> using namespace std;int main() {int n,a,b,c,d;cin>>n;for(a=0;a*a<n;a++){for(b=a;b*b+a*a<n;b++){for(c=b;c*c+b*b+a*a<n;c++){if(sqrt(n-a*a-b*b-c*c)==(int)sqrt(n-a*a-b*b-c*c)){cout<<a<<' '<<b<<' '<<c<<' '<<(int)sqrt(n-a*a-b*b-c*c)<<endl;return 0;}}}} }
练习题:A+B 问题
#include<bits/stdc++.h>using namespace std; int n,lena,lenb,ai,bi,jin,lenmax,p,q,i,t=0; int anss[100000]; int main() {memset(anss,0,sizeof(anss));jin=0;string a;string b;cin>>a;cin>>b;lena=a.size();lenb=b.size();lenmax=max(lena,lenb);p=lena-1;q=lenb-1;for(i=lenmax-1;i>=0;i--){if(p<0)ai='0';elseai=a[p];if(q<0)bi='0';elsebi=b[q]; anss[i]=(ai-'0'+bi-'0'+jin)%10;jin=(ai-'0'+bi-'0'+jin)/10;p--;q--;}if(jin)cout<<jin;for(i=0;i<lenmax;i++)cout<<anss[i];cout<<endl; }
练习题:A*B 问题
#include<iostream> #include<string> #include<string.h> #include<algorithm> using namespace std; int main(){string A,B;int ReverseA[1000+5];int ReverseB[1000+5];int a[1000+5];memset(a,0,sizeof(a));cin>>A>>B;int lenA = A.length();int lenB = B.length();// 得到逆转数组 for(int i=0;i<lenA;i++)ReverseA[i] = A[lenA-i-1]-'0';for(int i=0;i<lenB;i++)ReverseB[i] = B[lenB-i-1]-'0';// 计算 for(int i=0;i<lenA;i++)for(int j=0;j<lenB;j++){a[i+j] += ReverseA[i]*ReverseB[j];// 处理进位 if(a[i+j]>=10){a[i+j+1] += a[i+j]/10;a[i+j] %= 10;}}// 控制输出 bool flag = false;for(int i=lenA+lenB;i>=0;i--){if(a[i] && !flag || i==0) // 答案为 0 的特殊情况 flag = true;else if(!a[i] && !flag)continue; cout<<a[i];}return 0; }
练习题:蒜头君的随机数
#include<bits/stdc++.h>using namespace std;set<int>a;int main() {int n,x;cin>>n;while(n--){cin>>x;a.insert(x);}cout<<a.size()<<endl;set<int>::iterator it;bool flag=true;for(it=a.begin();it!=a.end();it++) {if(flag){cout<<*it;flag=!flag;}elsecout<<' '<<*it;}}
练习题:交叉排序
#include<bits/stdc++.h>using namespace std;bool cmp(int a,int b) {return a>b; }int main() {int n,i,l1,l2,r1,r2,a[100005];cin>>n>>l1>>r1>>l2>>r2;for(i=1;i<=n;i++)cin>>a[i];sort(a+l1,a+r1+1);sort(a+l2,a+r2+1,cmp);cout<<a[1];for(i=2;i<=n;i++){cout<<' '<<a[i];} }
练习题:进制转换
#include<bits/stdc++.h>using namespace std; stack<int>a; int main() {int x,n,r,flag=0;cin>>n>>r;if(n<0){flag=1;n=abs(n);}while(n>0){a.push(n%r);n=n/r;}if(a.empty()){cout<<0<<endl;return 0;}if(flag==1)cout<<'-';while(!a.empty()){x=a.top();if(x>=10)cout<<char(x-10+'A');elsecout<<x;a.pop();} }
练习题:回文数
#include<bits/stdc++.h>using namespace std;int sum=0; queue <int> qq; void panduan (int n) {string s;int m=n;while(m){s+=m%10+'0';m=m/10;}string k=s;reverse(k.begin(),k.end());if(s==k){//cout<<sum<<endl;//cout<<k<<endl; qq.push(n);return;}else{ //cout<<"s:"<<s<<' '<<"k:"<<k<<endl; int l=0;for(int i=0;i<s.size();i++){//cout<<pow(10,i)*(k[i]-'0')<<endl;+l+=pow(10,i)*(k[i]-'0');}//cout<<l<<endl;//cout<<n<<"--->"; qq.push(n);sum++;panduan(l+n);} }int main() {int n;cin>>n;panduan(n);cout<<sum<<endl;while(sum>=1){cout<<qq.front()<<"--->";qq.pop();sum--;}cout<<qq.front()<<endl; }
练习题:机器人
#include<bits/stdc++.h> using namespace std;int x,y;void go(int f,int l) {if(f==1){x+=l;}else if(f==2){y+=l;} else if(f==3){x-=l;}else if(f==4){y-=l;} }int main() {int n,s;cin>>n;int f=1;string str;while(n--){cin>>str>>s;if(str=="forward"){go(f,s);//cout<<x<<' '<<y<<' '<<f<<endl; }else if(str=="back"){if(f==1)go(f=3,s);else if(f==2)go(f=4,s);else if(f==3)go(f=1,s);else if(f==4)go(f=2,s);//cout<<x<<' '<<y<<' '<<f<<endl; }else if(str=="left"){if(f==1)go(f=2,s);else if(f==2)go(f=3,s);else if(f==3)go(f=4,s);else if(f==4)go(f=1,s);//cout<<x<<' '<<y<<' '<<f<<endl; }else if(str=="right"){if(f==1)go(f=4,s);else if(f==2)go(f=1,s);else if(f==3)go(f=2,s);else if(f==4)go(f=3,s);//cout<<x<<' '<<y<<' '<<f<<endl; }}cout<<x<<' '<<y<<endl; }
练习题:表达式求值
#include<bits/stdc++.h> using namespace std;int main() {int x,temp,anss;char c;cin>>x;temp=x;anss=0;while(cin>>c>>x){if(c=='+'){anss+=temp%10000;anss=anss%10000;temp=x%10000;}else if(c=='*'){temp*=x%10000;temp=temp%10000;}//cout<<anss<<endl; }anss+=temp%10000;cout<<anss%10000<<endl;}
练习题:HZF 爱斗牛
#include<bits/stdc++.h> using namespace std; int i,sum,flag,a[20],s[20],j,x; int main() {for(i=1;i<=5;i++){cin>>a[i];s[a[i]]++;}for(i=1;i<=13;i++){if(s[i]>=4){cout<<"quadra bomb orz"<<endl;return 0;}}sum=0;flag=0;for(i=1;i<=5;i++){if(a[i]>=5){flag=1;break;}sum+=a[i];}if(flag==0&&sum<=10){cout<<"penta calf"<<endl;return 0;}sum=0;for(i=1;i<=5;i++){if(a[i]>10){a[i]=10;}sum+=a[i];}for(i=1;i<=4;i++){for(j=i+1;j<=5;j++){if((a[i]+a[j])%10==0&&((sum-a[i]-a[j])%10==0)){cout<<"you can you up"<<endl;return 0;}}}for(x=1;x<=9;x++){for(i=1;i<=4;i++){for(j=i+1;j<=5;j++){if((a[i]+a[j])%10==x&&((sum-a[i]-a[j])%10==0)){cout<<"too young too simple:calf "<<x<<endl;return 0;}}}} cout<<"gg"<<endl; }
练习题:显示屏输出
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <set> using namespace std; char pic[10][5][2]= {// 第1行 第2行 第3行 第4行 第5行(1,3,5行,也就是日字的三横只有一笔,所以pic[1~10][{1,3,5}][1]=' '){{'-',' '},{'|','|'},{' ',' '},{'|','|'},{'-',' '}},//数字0的第一行,第二行,第三行……{{' ',' '},{' ','|'},{' ',' '},{' ','|'},{' ',' '}},//数字1的第一行,第二行,第三行……{{'-',' '},{' ','|'},{'-',' '},{'|',' '},{'-',' '}},{{'-',' '},{' ','|'},{'-',' '},{' ','|'},{'-',' '}},{{' ',' '},{'|','|'},{'-',' '},{' ','|'},{' ',' '}},{{'-',' '},{'|',' '},{'-',' '},{' ','|'},{'-',' '}},{{'-',' '},{'|',' '},{'-',' '},{'|','|'},{'-',' '}},{{'-',' '},{' ','|'},{' ',' '},{' ','|'},{' ',' '}},{{'-',' '},{'|','|'},{'-',' '},{'|','|'},{'-',' '}},{{'-',' '},{'|','|'},{'-',' '},{' ','|'},{'-',' '}} }; int main() {int ex,cnt=0,num[10];char str[100];cin>>ex;cin>>str;for(int i=0;str[i]!='\0';i++)num[i]=str[i]-'0';cnt = strlen(str);for(int row=1;row<=5;row++)//日字一共有5行 {if(row%2==1)//日字的三横 {for(int i=0;i<cnt;i++)//数字 {cout<<" ";for(int j=0;j<ex;j++)//放大的倍数cout<<pic[num[i]][row-1][0];cout<<" ";if(i!=cnt-1)cout<<" ";}cout<<endl;}else{for(int i=0;i<ex;i++)//'|'放大的倍数 {for(int j=0;j<cnt;j++)//数字 {char a,b;a=pic[num[j]][row-1][0];b=pic[num[j]][row-1][1];cout<<a;for(int k=0;k<ex;k++)cout<<" ";cout<<b;if(j!=cnt-1)cout<<" ";}cout<<endl;}}} }
练习题:得到整数 X
#include<bits/stdc++.h> using namespace std;int main() {int x,n,i,j,a[30];cin>>n>>x;for(i=0;i<n;i++){cin>>a[i];}int anss=0,sum=0;for(i=1;i<1<<n;i++){sum=0;for(j=0;j<n;j++){if(i&(1<<j)){sum+=a[j];}}if(sum==x)anss++;}cout<<anss<<endl; }
练习题:幼儿园买玩具
#include<bits/stdc++.h>using namespace std; int n,m,k,sum,anss=0,a[105][20],flags[20],flag,i,j,p,u,s; int main() {cin>>n>>m>>k;for(i=1;i<=n;i++){cin>>a[i][0];for(j=1;j<=a[i][0];j++){cin>>a[i][j];}}for(i=1;i<1<<k;i++){s=0;memset(flags,0,sizeof(flags));for(j=0;j<k;j++){if(1<<j&i){s++;flags[j]=1;}}if(s<=m){sum=0;for(p=1;p<=n;p++){flag=1;for(u=1;u<=a[p][0];u++){if(flags[a[p][u]-1]==0){flag=0;break;}}if(flag)sum++;}if(sum>anss)anss=sum;}}cout<<anss<<endl; }
练习题:islands 打炉石传说
#include<bits/stdc++.h>using namespace std;typedef struct {int cost;int d;int w; }node; node a[15]; int n,i,j,anss,sum,s,flag; int main() {cin>>n;for(i=0;i<n;i++){cin>>a[i].cost>>a[i].d>>a[i].w;}anss=0;for(i=1;i<1<<n;i++){sum=0;s=0;flag=0;for(j=0;j<n;j++){if(1<<j&i){if(a[j].d==0)flag=1;sum+=a[j].w;s+=a[j].cost;}}if(s<=10&&sum>anss&&flag)anss=sum;}cout<<anss<<endl; }