门禁系统:
#include <bits/stdc++.h> using namespace std; //记录当前出现几次 int a[1000]={0}; int main() { int n,t; cin>>n; for(int i=0;i<n;i++) { cin>>t; a[t]++; cout<<a[t]<<" "; } return 0; }
碰撞的小球:
#include <bits/stdc++.h> using namespace std; int x[101]; int v[101]; int main() { int n,l,t; cin>>n>>l>>t; for(int i=1;i<=n;i++) { cin>>x[i]; v[i]=1; if(x[i]==l||x[i]==0) v[i]=-v[i]; } for(int i=0;i<t;i++) { for(int j=1;j<=n;j++) { x[j]+=v[j]; if(x[j]==l||x[j]==0) v[j]=-v[j]; } for(int j=1;j<n;j++) { for(int f=j+1;f<=n;f++) { if(x[j]==x[f]) { v[j]=-v[j]; v[f]=-v[f]; } } } } for(int i=1;i<=n;i++) { cout<<x[i]<<" "; } return 0; }
日期计算:
#include <bits/stdc++.h> using namespace std; int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int main() { int y,d,month=0,day; int sum=0; cin>>y>>d; if((y%4==0&&y%100!=0)||(y%400==0)) { a[2]=29; } for(int i=1;i<13;i++) { if(d-a[i]>0) { month++; d-=a[i]; } else { month++; day=d; break; } } cout<<month<<endl; cout<<day<<endl; return 0; }
数列分段:
#include <bits/stdc++.h> using namespace std; int main() { int n,a,b,result=1; cin>>n; cin>>a; for(int i=1;i<n;i++) { cin>>b; if(b!=a)result++; a=b; } cout<<result; return 0; }
数位之和:
#include <bits/stdc++.h> using namespace std; //数位之和:用字符串做->简化 int main() { string n; int result=0; cin>>n; for(int i=0;i<n.length();i++) { result+=n[i]-'0'; } cout<<result; return 0; }
数字排序:
#include <bits/stdc++.h> using namespace std; struct node { int key; int num; }; bool cmp(node v1,node v2) { if(v1.num!=v2.num) return v1.num>v2.num; else if(v1.num==v2.num) return v1.key<v2.key; } int main() { vector<node> v; map<int,int> m; int n; cin>>n; for(int i=0;i<n;i++) { int temp; cin>>temp; m[temp]++; } for(map<int,int>::iterator it=m.begin();it!=m.end();it++) { node temp; temp.key=it->first; temp.num=it->second; v.push_back(temp); } sort(v.begin(),v.end(),cmp); for(vector<node>::iterator it=v.begin();it!=v.end();it++) { cout<<it->key<<" "<<it->num<<endl; } return 0; }
跳一跳:
#include <bits/stdc++.h> using namespace std; int a[30]={0}; int main() { int t; int flag; int score=0; cin>>t; flag=1; while(t!=0) { if(t==1)//跳至方格边缘 { score+=1; flag=1; } else if(t==2)//跳至方格中心 { if(flag==1)score+=2; else score+=(2*flag); flag++; } cin>>t; } cout<<score; return 0; }
图像旋转:
#include <bits/stdc++.h> using namespace std; //(i,j)->(m-j-1,i) int a[1000][1000]; int main() { int n,m; cin>>n>>m; for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>a[i][j]; for(int i=0;i<m;i++) { for(int j=0;j<n;j++) cout<<a[j][m-i-1]<<" "; cout<<endl; } return 0; }
相反数:
#include <bits/stdc++.h> using namespace std; int main() { set<int> st; int n,x,result=0; cin>>n; for(int i=0;i<n;i++) { cin>>x; st.insert(x); if(st.count(-x)==1) { result++; } } cout<<result; return 0; }
相邻数对:
#include <bits/stdc++.h> using namespace std; int a[1000]={0}; int main() { int n,result=0,t; cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; } sort(a,a+n); for(int i=0;i<n-1;i++) { if(a[i]+1==a[i+1])result++; } cout<<result; return 0; }
消除类游戏:
#include <bits/stdc++.h> using namespace std; //颜色1-9编号 int a[30][30]; int main() { int n,m; cin>>n>>m; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin>>a[i][j]; } } //行中消除 for(int i=0;i<n;i++) { for(int j=0;j<m-2;j++) { if(abs(a[i][j])==abs(a[i][j+1])&&abs(a[i][j])==abs(a[i][j+2])) { if(a[i][j]>0) a[i][j]=-a[i][j]; if(a[i][j+1]>0) a[i][j+1]=-a[i][j+1]; if(a[i][j+2]>0) a[i][j+2]=-a[i][j+2]; } } } //列中消除 for(int j=0;j<m;j++) { for(int i=0;i<n-2;i++) { if(abs(a[i][j])==abs(a[i+1][j])&&abs(a[i][j])==abs(a[i+2][j])) { if(a[i][j]>0) a[i][j]=-a[i][j]; if(a[i+1][j]>0) a[i+1][j]=-a[i+1][j]; if(a[i+2][j]>0) a[i+2][j]=-a[i+2][j]; } } } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(a[i][j]<0)a[i][j]=0; cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
学生排队:
#include <bits/stdc++.h> using namespace std; int a[1001]; int main() { int n,m,p,q,index; cin>>n>>m; for(int i=1;i<=n;i++) { a[i]=i; } for(int i=0;i<m;i++) { cin>>p>>q; for(int j=1;j<=n;j++) { if(a[j]==p) index=j; } if(q>0) { for(int j=0;j<q;j++) { a[j+index]=a[j+index+1]; } a[index+q]=p; } else { for(int j=0;j<-q;j++) { a[index-j]=a[index-j-1]; } a[index+q]=p; } } for(int i=1;i<=n;i++) { cout<<a[i]<<" "; } return 0; }
游戏:
#include <bits/stdc++.h> using namespace std; int a[1001]={0}; int main() { int n,k,result; cin>>n>>k; int sum=0; int t=0; while(t!=n-1) { for(int i=1;i<=n;i++) { if(a[i]==0) { sum++; if(t==n-1) break; if(sum%k==0||sum%10==k) { a[i]=1; t++; } } } } for(int i=0;i<=n;i++) { if(a[i]==0)result=i; } cout<<result; return 0; }
折点计数:
#include <bits/stdc++.h> using namespace std; int a[1000]; int main() { int n,result=0; cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; } for(int i=1;i<n-1;i++) { if((a[i]>a[i-1]&&a[i]>a[i+1])||(a[i]<a[i-1]&&a[i]<a[i+1])) result++; } cout<<result; return 0; }
中间数:
#include <bits/stdc++.h> using namespace std; int a[1001]; int main() { int n; int result; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } sort(a+1,a+n+1); int t=a[n/2+1]; int less=0,more=0; for(int i=1;i<=n;i++) { if(a[i]<t)less++; if(a[i]>t)more++; } if(less==more)result=t; else result=-1; cout<<result; return 0; }
最大波动:
#include <bits/stdc++.h> using namespace std; int main() { int n,a,b; cin>>n; int max=0; cin>>a; for(int i=1;i<n;i++) { cin>>b; if(fabs(a-b)>max) max=fabs(a-b); a=b; } cout<<max; return 0; }
最小差值:
#include <bits/stdc++.h> using namespace std; int a[1000]; int main() { int n; cin>>n; int min=2147483647,maxIndex; for(int i=0;i<n;i++) { cin>>a[i]; } for(int i=0;i<n-1;i++) { for(int j=i+1;j<n;j++) { if(fabs(a[i]-a[j])<min) min=fabs(a[i]-a[j]); } } cout<<min; return 0; }