2017年天梯赛大区赛题集
L1:
-
stl set 的使用
#include<iostream> #include<set> #include<stdio.h> using namespace std; int y,n; set<int> Set; int main() { cin>>y>>n; for(int i=y;i<=3012;i++) { Set.clear(); int temp=i; for(int j=0;j<4;j++) { Set.insert(temp%10); temp/=10; } if(Set.size()==n) { printf("%d %04d",i-y,i); break; } } return 0; }
-
#include<iostream> #include<algorithm> using namespace std; int n,k,x; struct node{ int id,cnt; }a[1001]; int cmp(node x,node y) { if(x.cnt==y.cnt) return x.id>y.id; else return x.cnt>y.cnt; } int main() { cin>>n; while(n--) { cin>>k; for(int i=0;i<k;i++) { cin>>x; a[x].id=x; a[x].cnt++; } } sort(a,a+1001,cmp); cout<<a[0].id<<" "<<a[0].cnt; return 0; }
-
printf 输出 stirng ,需要将调用 string.c_str()
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; string name,a,b; int cnt=0; int main() { while(cin>>name) { if(name[0]=='.') break; cnt++; if(cnt==2) a=name; if(cnt==14) b=name; } if(cnt>14) printf("%s and %s are inviting you to dinner...",a.c_str(),b.c_str()); else if(cnt>=2) printf("%s is the only one for you...",a.c_str()); else printf("Momo... No one is for you ..."); return 0; }
-
#include<iostream> using namespace std; int a,b; int main() { cin>>a>>b; cout<<a*b<<endl; return 0; }
-
#include<iostream> #include<stdio.h> using namespace std; int a,b; int main() { cin>>a>>b; if(b==0) printf("%d/%d=Error",a,b); double res=a*1.0/b; if(b<0) printf("%d/(%d)=%.2f",a,b,res); if(b>0) printf("%d/%d=%.2f",a,b,res); return 0; }
-
#include<stdio.h> int main() { printf("Hello World\nHello New World"); return 0; }
-
样例给出:
asa T st ih e tsi ce s
我们可以将样翻转一下,即将输入的字符串存储为:
T h i s i s a t e s t c a s e
然后就一列一列输出
#include<iostream> #include<string.h> #include<stdio.h> using namespace std; int n; string s; char a[1001][1001]; int main() { cin>>n; getchar(); getline(cin,s); int size=s.size(),row,col=n; if(size%n==0) row=size/n; else row=size/n+1; int idx=0; for(int i=1;i<=row;i++) { for(int j=1;j<=col;j++) { if(idx<size) a[i][j]=s[idx++]; else a[i][j]=' '; } } for(int j=1;j<=col;j++) { for(int i=row;i>=1;i--) { printf("%c",a[i][j]); } printf("\n"); } return 0; }
-
#include<iostream> #include<stdio.h> using namespace std; int n; double x,res; char ch; int main() { cin>>n; while(n--) { cin>>ch>>x; if(ch=='M') {res=x*1.0/1.09;printf("%.2f\n",res);} else {res=x*1.09;printf("%.2f\n",res);} } return 0; }
L2:
-
想复杂了,其实很简单,按照题目和样例的意思:
- 如果总人数是偶数,均分
- 如果总人数是奇数,外向的人多一个
#include<iostream> #include<algorithm> using namespace std; int n,a[100001],diff; int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+1+n); if(n%2==0) { for(int i=1;i<=n;i++) { if(i<=n/2) diff-=a[i]; else diff+=a[i]; } printf("Outgoing #: %d\nIntroverted #: %d\nDiff = %d",n/2,n/2,diff); } else { for(int i=1;i<=n;i++) { if(i<=n/2) diff-=a[i]; else diff+=a[i]; } printf("Outgoing #: %d\nIntroverted #: %d\nDiff = %d",n/2+1,n/2,diff); } return 0; }
-
-
stl set 真的极香 真好用~
#include<iostream> #include<set> using namespace std; int n,m,flag=0; double Sum; string s; set<string> list,ans; struct node{ string name; int cnt; }a[100000]; int main() { cin>>n; for(int i=1;i<=n;i++) {cin>>s;list.insert(s);} cin>>m; for(int i=0;i<m;i++) { cin>>a[i].name>>a[i].cnt; Sum+=a[i].cnt; } Sum=Sum/(m); for(int i=0;i<m;i++) { int cnt=a[i].cnt; string name=a[i].name; if(cnt>Sum && list.find(name)==list.end()) { ans.insert(name); flag=1; } } if(!flag) cout<<"Bing Mei You"<<endl; else for(set<string>::iterator it=ans.begin();it!=ans.end();it++) cout<<*it<<endl; return 0; }
-
L3:
嗯,惯例,这些留给 ACMER 大佬做就行啦,我就是个划水的~