2017.11.15_SUST测试赛

来源:互联网 发布:淘宝店铺可以注销吗 编辑:程序博客网 时间:2024/06/05 19:01

A.签到题

#include<stdio.h>int main(){      printf("Hello World!");      return 0;}

B.计算两点间距离

#include<stdio.h>#include<math.h>int main(){double x1,y1,x2,y2;    while(~scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2)){      printf("%.2lf\n",sqrt( pow(x2-x1,2) +pow(y2-y1,2)));//printf("%.2lf\n",sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));}return 0;}

C.oil deposits

#include<stdio.h>#include<string.h>char oil[140][140];int m,n;int main(){int dfs(int i,int j);while(scanf("%d %d",&m,&n),!(m==0 && n==0)){int i,j,k,ans=0;for(i=0;i<m;i++){      scanf("%s",oil[i]);}for(i=0;i<m;i++){for(j=0;j<n;j++){if(oil[i][j]=='@'){dfs(i,j);ans++;}}}/*for(i=0;i<m;i++){for(j=0;j<n;j++){printf("%c ",oil[i][j]);}printf("\n");}*/printf("%d\n",ans);}return 0;} int dfs(int i,int j){if(oil[i][j]!='@' || i<0 || j<0 || i>m-1 || j>n-1){return 0;}oil[i][j]='*';dfs(i-1,j-1);dfs(i-1,j);dfs(i-1,j+1);dfs(i,j-1);dfs(i,j+1);dfs(i+1,j-1);dfs(i+1,j);dfs(i+1,j+1);return 0;}

D一只小蜜蜂

#include<stdio.h>int main(){int num;scanf("%d",&num);while(num--){int i,j,k;long long int m=1,n=2,b=0;scanf("%d %d",&i,&j);k=j-i;if(k==1){printf("1\n");continue;}else if(k==2){printf("2\n");continue;}k=k-2;while(k--){b=m+n;m=n;n=b;}printf("%lld\n",b);}return 0;}

E发工资喽

#include<stdio.h>int main(){int num=1,count,i;int cat[101]={0};while(scanf("%d",&num),num){count=0;     for(i=0;i<num;i++){    scanf("%d",&cat[i]);}    for(i=0;i<num;i++){    while(cat[i]!=0){     if(cat[i]>=100){          cat[i]-=100;       count++;        }else if(cat[i]>=50){        cat[i]-=50;        count++;}else if(cat[i]>=10){cat[i]-=10;count++;}else if(cat[i]>=5){cat[i]-=5;count++;}else if(cat[i]>=2){cat[i]-=2;count++;}else if(cat[i]>=1){cat[i]-=1;count++;} }  }  printf("%d\n",count);}return 0;}

F  duizi and shunzi

#include<stdio.h>#include<algorithm>#include<stack>using namespace std;int al[10000005];int a1,b1,c1;int main(){int n,temp;while(~scanf("%d",&n)){stack<int> a;              //用栈保存当前的牌 int count=0;for(int i=0;i<n;i++){scanf("%d",&al[i]);}sort(al,al+n);for(int i=0;i<n;i++){temp=al[i];if(a.empty()){a.push(temp);continue;}if(temp==a.top()){a.pop();count++;}else if(temp-a.top()==1){c1=temp;b1=a.top();a.pop();if(a.empty()){a.push(b1);a.push(c1);continue;}a1=a.top();if(c1-b1==1 && b1-a1==1){a.pop();count++;}else {a.push(b1);a.push(c1);}}else {a.push(temp);}}printf("%d\n",count);}return 0;} 

G   windows message  queue

#include<iostream>#include<queue>#include<cstring>using namespace std;struct mess{    string name;    int value;    int key;    friend bool operator < (mess n1,mess n2)    {        return n1.key>n2.key;    }};int main(){    priority_queue<mess> q;    if(q.empty()){        q.empty();    }    string str;    while(cin>>str)    {        if(str[0]=='G')        {            if(!q.empty())            {                cout<<q.top().name<<" "<<q.top().value<<endl;                q.pop();            }            else                cout<<"EMPTY QUEUE!"<<endl;        }        if(str[0]=='P')        {            mess m;            cin>>m.name>>m.value>>m.key;            q.push(m);        }    }    return 0;}

#include<stdio.h>#include<string.h>#define INF 0x7f7f7fstruct information{ char name[40];     //信息名字 char content[40];  //信息参数     int priority;      //优先级 }cat[70000],temp;            int main(){int count = 0,i,j;char command[10];    //命令类型while(scanf("%s",command)!=EOF){     if(!strcmp(command,"GET")){       count--;       if(count<0){       printf("EMPTY QUEUE!\n");       count=0;       continue;   }else {    printf("%s %s\n",cat[count+1].name,cat[count+1].content);continue;   } }else if(!strcmp(command,"PUT")){   count++;   }   scanf("%s",&cat[count].name); scanf("%s",&cat[count].content); scanf("%d",&cat[count].priority);   temp=cat[count];          cat[0].priority=INF;  for(i=count-1;i>=0;i--){   if(temp.priority<cat[i].priority){                     cat[i+1]=temp;                     break;   }else if(temp.priority>=cat[i].priority){        cat[i+1]=cat[i];   } }} return 0;}

H水仙花数

#include<stdlib.h>#include<stdio.h>int main(){int fun(int i);int a,b,sum=0,i,flag,ht;while(~scanf("%d %d",&a,&b)){ht=0; flag=0;for(i=a;i<=b;i++){  sum=fun(i%10)+fun(i/10%10)+fun(i/10/10);  if(sum==i && flag==0){  printf("%d",sum);  flag=1;  ht=1;  }else if(sum==i && flag==1) {  printf(" %d",sum);  ht=1;  }}if(ht==0){printf("no\n");}else  printf("\n");}return 0;}int fun(int i){return i*i*i; }

I 鸽巢原理 ignatius and the princess iv

#include<stdio.h>int main(){int num;while(scanf("%d",&num)!=EOF){   int i,temp,count=0,cat;for(i=0;i<num;i++){scanf("%d",&cat);if(count==0){temp=cat;count++;continue;}if(temp!=cat)   count--;else  count++;}printf("%d\n",temp);}return 0;}

J encoding

#include<stdio.h>#include<string.h>int main(){int num,alen,count=1,i;char str[10050];scanf("%d",&num);while(num--){  scanf("%s",&str);  alen=strlen(str);  for(i=0;i<alen;i++){     if(str[i]==str[i+1]){           count++;           continue; }else if(count==1){printf("%c",str[i]);count=1;}else if(count!=0){printf("%d%c",count,str[i]);count=1;}  }  printf("\n");     }return 0;}

#include<iostream>#include<cstring>#include<cstdio>using namespace std;int main(){int n,i,c;char m[10005];cin>>n;while(n--){cin>>m;for(i=0;m[i]!='\0';){c=1;while(m[i]==m[i+1]){c++;i++;}if(c==1)cout<<m[i];elsecout<<c<<m[i];i++;}cout<<endl;}return 0;} 

K 杨辉三角

#include <stdio.h>#include <math.h>int main(){int i,j,num, b[50][50] = { 0 };while (~scanf("%d", &num)){b[0][0]=1;for(i=1;i<=num;i++){for(j=1;j<=i;j++){b[i][j]=b[i-1][j-1]+b[i-1][j];if(i!=j){printf("%d ",b[i][j]); }else printf("%d",b[i][j]);}printf("\n");}printf("\n");}return 0;}

L whikey的眼神

//输入L,sx,sy,px,py; L<=1000,sx,sy是WisKey的坐标,px,py是Rabbit的坐标.//以L=0为结束. #include<stdio.h>#include<math.h>int gcd(int a,int b);int fun(int sx,int sy,int px,int py);int main(){    int l,sx,sy,px,py,r;while(scanf("%d",&l)){if(l==0)break;scanf("%d %d %d %d",&sx,&sy,&px,&py);if(abs(sx)>l || abs(sy)>l || abs(px)>l || abs(py)>l){printf("Out Of Range\n");continue;}r=fun(sx,sy,px,py);if(r){printf("No\n");}else printf("Yes\n");}return 0;}int fun(int sx,int sy,int px,int py){int a=abs(sx-px); int b=abs(sy-py);if(gcd(a,b)!=1)return 1;else return 0;}int gcd(int a,int b){   return b==0?a:gcd(b,a%b);}

#include<iostream>#include<math.h>using namespace std;int main(){int L;int x1, y1, x2, y2,x,y;while (cin >> L){if (L == 0)  break;cin >> x1 >> y1 >> x2 >> y2;if (abs(x2) > L || abs(y2) > L){cout << "Out Of Range" << endl;}else{x = abs(x1 - x2);y = abs(y1 - y2);if (x == 0 || y == 0 && (x + y)!= 1){cout << "No" << endl;continue;}int r = x%y;while (r != 0){x = y;y = r;r = x%y;}if (y == 1) cout << "Yes" << endl;else cout << "No" << endl;}}return 0;}

M 数塔取数问题

#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn=500+5;int dp[maxn][maxn];int num[maxn][maxn];int main(){    int n;    while(scanf("%d",&n)!=EOF)    {        memset(dp,0,sizeof(dp));        for(int i=0;i<n;i++)        {            for(int j=0;j<=i;j++)            {                scanf("%d",&num[i][j]);            }        }        for(int i=0;i<n;i++)        {            dp[n-1][i]=num[n-1][i];        }        for(int i=n-2;i>=0;i--)        {            for(int j=0;j<=i;j++)            {                dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+num[i][j];            }        }        printf("%d\n",dp[0][0]);    }    return 0;}

#include<stdio.h>#include<algorithm>#include<math.h>using namespace std;int map[501][501];int data[501][501];int main(){int L;scanf("%d",&L);for(int i=1;i<=L;i++){for(int j=1;j<=i;j++){scanf("%d",&data[i][j]);}}map[1][1]=data[1][1];for(int i=2;i<=L;i++){for(int j=1;j<=i;j++){map[i][j]=max(map[i-1][j-1],map[i-1][j])+data[i][j];}}int maxn=0;for(int i=1;i<=L;i++){maxn=max(maxn,map[L][i]);}printf("%d\n",maxn);return 0;}

N 手机短号

#include<stdio.h>#include<string.h>int main(){int num;char str[11];scanf("%d",&num);while(num--){  scanf("%s",str);  printf("6%s\n",str+6);}return 0;}

O 成绩转换

#include<stdio.h>int main(){int num;while(~scanf("%d",&num)){if(num<0 || num>100){ printf("Score is error!\n");}else if(num>=90 && num<=100){          printf("A\n");}else if(num>=80){  printf("B\n");}else if(num>=70){  printf("C\n");}else if(num>=60){  printf("D\n");}else if(num>=0){      printf("E\n");}}return 0;}

P the 3n+1 proble

#include<stdio.h>int num (int n);int main(){int a,b,i,temp,ans;while(~scanf("%d %d",&a,&b)){printf("%d %d ",a,b);if(a>b){int temp=a;a=b;b=temp;}ans=0;int length;for(i=a;i<=b;i++){temp=num(i);if(temp>ans) ans=temp;}printf("%d\n",ans);//printf("%d %d %d\n",a,b,ans);}return 0;}int num(int n){int l=1;while(n!=1){if(n%2==0){n/=2;}else {n=3*n+1;}l++;}return l;} 

Q  Prime cuts

#include <stdio.h>int main (){int N, c, i, j, n, a[1010];while (~scanf("%d%d", &N, &c)){a[0] = 1;n = 1;                        for (i=1; i<=N; i++){         for (j=2; j<=i/2; j++)     if (i%j == 0)      break;if (j>i/2){a[n] = i;n++;                   }}printf ("%d %d:", N, c);       if (2*c > n+1){                for (i=1; i<n; i++)   printf (" %d", a[i]);printf ("\n\n");}else{    if ((n+1)%2==0){    for (i=n/2-c+1; i<=n/2+c; i++)       printf (" %d", a[i]);    printf ("\n\n");    }    else{        for (i=n/2-c+1; i<=n/2+c-1; i++)           printf (" %d", a[i]);        printf ("\n\n");    }}}return 0;}

R clock

#include<stdio.h>#include<math.h>struct  clock{int h;int m;int sum;}cat[5];int main(){   struct clock tmp;   int num,i,j,a,b;   scanf("%d",&num);   while(num--)   {     for(i=0;i<5;i++)     {      scanf("%d:%d",&cat[i].h,&cat[i].m);         cat[i].sum=abs((cat[i].h%12)*60+cat[i].m-12*cat[i].m);         if(cat[i].sum>360){           cat[i].sum=720-cat[i].sum; }// printf("%d\n",&cat[i].sum);  }  for(i=0;i<4;i++){    for(j=0;j<4-i;j++){      if(cat[j].sum>cat[j+1].sum){            tmp=cat[j];            cat[j]=cat[j+1];            cat[j+1]=tmp; }else if(cat[j].sum==cat[j+1].sum){       a=cat[j].h*60+cat[j].m;       b=cat[j+1].h*60+cat[j+1].m;       if(a>b){           tmp=cat[j];                cat[j]=cat[j+1];                cat[j+1]=tmp;   }  } }  }  printf("%02d:%02d\n",cat[2].h,cat[2].m);   }   return 0;} 

# include <stdio.h># include <math.h>typedef struct{int hour, minute;double angle;} time;int main (void){int n;scanf ("%d", &n);while(n--){time s[5];int a, b, c, d;for (int i = 0; i < 5; i++){scanf ("%d:%d", &s[i].hour, &s[i].minute);             //printf ("%d %d\n", s[i].hour,s[i].minute);s[i].angle =  fabs(s[i].minute + s[i].hour%12 * 60 - 12*s[i].minute);if (s[i].angle > 360.0)                s[i].angle = 720 - s[i].angle;//printf ("%lf\n", s[i].angle);}time t;for (int i = 5; i > 0; i--){for (int j = 1; j < i; j++){if(s[j-1].angle > s[j].angle){t = s[j-1];s[j-1] = s[j];s[j] = t;}else if (s[j-1].angle == s[j].angle && s[j-1].hour > s[j].hour){t = s[j-1];s[j-1] = s[j];s[j] = t;}}}//for (int i = 0; i < 5; i++)          //  printf ("**%02d:%02d %lf  ", s[i].hour, s[i].minute, s[i].angle);printf ("%02d:%02d\n", s[2].hour, s[2].minute);}return 0; }

S Ancient cipher

#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxn=26;int cnt1[maxn],cnt2[maxn];int main(){    string str1,str2;    while(cin>>str1>>str2)    {        memset(cnt1,0,sizeof(cnt1));        memset(cnt2,0,sizeof(cnt2));        for(int i=0;i<str1.length();i++)        {            cnt1[str1[i]-'A']++;        }        for(int i=0;i<str2.length();i++)        {            cnt2[str2[i]-'A']++;        }        sort(cnt1,cnt1+maxn);        sort(cnt2,cnt2+maxn);         bool flag=true;         int i=0,j=0;         while(i<maxn&&j<maxn)         {             if(cnt1[i]==cnt2[j])             {                 i++;                 j++;             }             else{                flag=false;                break;             }         }        if(flag==true)        {            printf("YES\n");        }        else        {            printf("NO\n");        }    }    return 0;}

























我爱你