NYNU_ACM 實驗室招新月賽題解

ACM_e發表於2017-10-30

A

#include<bits/stdc++.h>
using namespace std;
//int a[10001];
//int b[10001];
int main(){
   long long n,x,y;
     cin>>n;
    cin>>x>>y;
   long long l=x;
   for(int j=1;j<n;j++){
      cin>>x>>y; //l++;
      for(int k=0;k<100000000;k++){   //列舉上班的時間
         if(x+k*y>l){
            l=x+k*y;
            break;
         }
      }
   }
   cout<<l<<endl;
   return 0;
}

B

稍微有些麻煩   字串頭尾相接 是一個 環  

每個字元只能向後移動或者向前移動 

樣例解釋    c t t c  ->  c c t t      dfabc->  fabcd-> abcdf             dfacb 同理

#include<iostream>
#include<string>
#include<string.h>
using namespace std;
  
const int maxn=50;
int n;
char  s[maxn]; 
bool latt(int p,int q){
    int n=strlen(s);
    for(int i=0;i<n;i++)
        if(s[(p+i)%n]!=s[(q+i)%n])
            return s[(p+i)%n]<s[(q+i)%n];   //這個地方好好看看 好好理解 取模的 概念
    return 0; //相等 無需比較 
}
int main(){
    int t,i;
    cin>>t;
   // char  s[maxn];
    while(t--){
        cin>>s;
        int ans=0;
        int n=strlen(s);
        for(i=1;i<n;i++)
            if(latt(i,ans)) ans=i;
        for(i=0;i<n;i++)
            cout<<s[(i+ans)%n];
        cout<<endl;
    }
    return 0;
}


C:


#include<iostream>    
#include<algorithm>    
using namespace std;    
struct student    
{    
    string name;    
    int y;    
    int m;    
    int d;   
    int num;   
}
a[101];    
int cmp(const student & a,const student & b)    //為什麼能這樣寫  這樣寫的含義 回去好好理解!  
{    
    if (a.y>b.y) return 0;                      
    if (a.y<b.y) return 1;                   //體會 return 的意義
    if (a.m>b.m) return 0;        
    if (a.m<b.m) return 1;        
    if (a.d>b.d) return 0;        
    if (a.d<b.d) return 1;        
    if (a.num>b.num)return 1;  
    return 0;    
}    
int main()    
{    
    int n;    
    cin>>n;    
    for(int i=1;i<=n;i++)    
    {  
        cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;    
        a[i].num=i;  
    }  
    sort (a+1,a+n+1,cmp);    
    for (int i=1;i<=n;i++)    
            cout<<a[i].name<<endl;  
}  


D:

逢七過   不會玩的 百度

#include <iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    string str;
    if (n%7==0) cout<<"pass"<<endl;
    else if (n%10==7) cout<<"pass"<<endl;
    else if (n/10%10==7) cout<<"pass"<<endl;
    else if (n/100%10==7) cout<<"pass"<<endl;
    else if (n/1000%10==7) cout<<"pass"<<endl;
    else cout<<"NO!!"<<endl;
    return 0;
}

E:

這個 排序之後   從小開始 剔除   記錄一下總和就好!

#include<iostream>
#include<algorithm>
using namespace std;
int a[1050];
int main()
{
    int n;
    cin>>n;
    long long sum=0,ans=0;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        sum+=a[i];
    }
    sort(a,a+n);
    for(int i=0;i<n-1;i++)
    {
        ans+=sum;
        sum-=a[i];
    }
    cout<<ans<<endl;
    return 0;
}
F:

排版慘不忍睹 !  比較混亂!  簡單的結構體排序

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct  xfx
    {
        char name[40];
        int sg;
        int tz;
    }a[1000];
int cmp(xfx a,xfx b)
{
    if(a.sg==b.sg) return a.tz<b.tz;
    else return a.sg<b.sg;
}
int main()
{
    int n,i,r;
    while(scanf("%d",&n)!=EOF){r=0;
    for(i=0;i<n;i++) scanf("%s%d%d",&a[i].name,&a[i].sg,&a[i].tz);
    int x1,x2,y1,y2;
    scanf("%d%d%d%d",&x1,&x2,&y1,&y2);
    sort(a,a+n,cmp);
    for(int i=0;i<n;i++)
    if(a[i].sg>=x1&&a[i].sg<=x2&&a[i].tz>=y1&&a[i].tz<=y2)
    {printf("%s %d %d\n",a[i].name,a[i].sg,a[i].tz);r++;}
    if(r==0) printf("No\n");
    }
    return 0;
}
 


G:

排版慘不忍睹系列  輸出 6和末尾幾個 字元就好

#include <stdio.h>
int main()
{
int i;
char a[12];
int n;
scanf("%d",&n);
while(n--){
for(i=0;i<=11;i++)
scanf("%c",&a[i]);
printf("6");
for(i=7;i<=11;i++)
printf("%c",a[i]);
printf("\n");
}
return 0;
}
 

H:

簡單的結構體排序 和字串匹配

#include <iostream>
#include <string>
using namespace std;
struct people
{
    string name;
    string home;
    int year;
};
int main()
{
    int n,i;
    string yhome;
    cin>>n;
    cin>>yhome;
    people a[100];
    for(i=0;i<n;i++)
    {
        cin>>a[i].name>>a[i].home>>a[i].year;
    }
    for(i=0;i<n;i++)
        for(int j=0;j<n-1;j++)
            if(a[i].year>a[j].year)
            {
                people temp;
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
    bool flag=false;
    for(i=0;i<n;i++)
        if(a[i].home==yhome)
        {
            flag =true;
            cout<<a[i].name<<endl;
        }
    if(!flag)
        cout<<"QAQ"<<endl;
    return 0;
}
 

I:

歡迎來到 文高陽學長  程式碼看不懂系列  不會的私聊他

#include<bits/stdc++.h>
using namespace std;
double a[100][100],s[100];
int main()
{
    double n,m;
    while(cin>>n>>m)
    {
        int c,f,h=0,g=0;
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
            scanf("%lf",&a[i][j]);
        for(int i=0;i<n;i++)
        {
            double b=0.0;
            if(i>0) printf(" ");
            for(int j=0;j<m;j++)
            {
                b+=a[i][j];
                if(j==m-1)
                printf("%.3lf",b/m);
            }
        }printf("\n");
        for(int j=0;j<m;j++)
            {
                double b=0;if(j>0) printf(" ");
                for(int i=0;i<n;i++)
                {
                b+=a[i][j];
                if(i==n-1)
                {
                    printf("%.3lf",b/n);
                    s[h++]=b/n;
                }
                }
            }printf("\n");
            for(int i=0;i<n;i++)
            {
                int e=0;
                for(int j=0;j<m;j++)
            {
                if(a[i][j]>=s[j])
                    e++;
                if(e==m)
                    g++;
            }
            }
            printf("%d\n",g);
    }
}


以上為弱校月賽內容        大牛勿噴


相關文章