2016-8-13训练赛AC代码

    xiaoxiao2025-01-07  20

    习题地址传送门:

    http://acm.zcmu.edu.cn/JudgeOnline/contest.php?cid=1155

    ———————— A ————————

    #include <iostream> using namespace std; int n,m; bool OK(int a,int b) {     return (a*a+b*b+m)%(a*b)==0; } int main() {     int ans,i,j,k=0;     while(cin>>n>>m)     {         if(n==0&&m==0)             break;         k++;         ans=0;         for(i=1;i<n-1;i++)         {             for(j=i+1;j<n;j++)             {                 if(OK(i,j))                     ans++;             }         }         cout<<"Case "<<k<<": "<<ans<<endl;     }     return 0; }

    ———————— B ————————

    #include <iostream> #include <iomanip> #include <cmath> #include <algorithm> using namespace std; bool OK(int x) {     if(x>100||x<0)         return false;     return true; } double min(double a,double b) {     return a<b?a:b; } double cal(double x1,double y1,double x2,double y2) {     return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); } int main() {     double x1,x2,y1,y2,k,b,dx[4],dy[4],ans;     int i,j;     while(cin>>x1>>y1>>x2>>y2)     {         ans=99999;         if(x1==x2)         {             cout<<"100.00"<<endl;             continue;         }         k=(y1-y2)/(x1-x2);         b=y1-x1*k;         dy[0]=0;dx[0]=(dy[0]-b)/k;         dx[1]=0;dy[1]=k*dx[1]+b;         dx[2]=100;dy[2]=k*dx[2]+b;         dy[3]=100;dx[3]=(dy[3]-b)/k;         for(i=0;i<4;i++)         {             for(j=i+1;j<4;j++)             {                 if(!(OK(dx[i])&&OK(dy[i])&&OK(dx[j])&&OK(dy[j])))                     continue;                 if(dx[i]==dx[j]&&dy[i]==dy[j])                     continue;                 ans=min(ans,cal(dx[i],dy[i],dx[j],dy[j]));             }         }         cout<<fixed<<setprecision(2)<<ans<<endl;     }     return 0; }

    —————— D ———————

    #include <iostream> #include <string.h> using namespace std; int main() {     int ans,i,n;     char str[10010];     cin>>n;     while(n--)     {         ans=0;         cin>>str;         for(i=0;i<strlen(str);i++)         {             if(str[i]=='8')                 ans+=2;             if(str[i]=='0'||str[i]=='9'||str[i]=='6')                 ans++;         }         cout<<ans<<endl;     }     return 0; }

    —————— E ——————

    #include <iostream> #include <algorithm> #include <string.h> using namespace std; typedef struct {     int left,right; }node; bool cmp(node a,node b) {     return a.right<b.right; } int main() {     node N[1010];     int a,b,i,j,ans,n;     while(cin>>n)     {         ans=0;         memset(N,0,sizeof(N));         for(i=0;i<n;i++)         {             cin>>a>>b;             N[i].left=min(a,b);             N[i].right=max(a,b);         }         sort(N,N+n,cmp);         for(i=1,j=0;i<n;i++)         {             if(N[i].left<=N[j].right)             {                 ans++;                 continue;             }             else             {                 j=i;             }         }         cout<<ans<<endl;     }     return 0; }

    —————— F ——————

    #include <iostream> #include <string.h> using namespace std; bool OK(char *str,int left,int right) {     int i;     char cmp1[100100],cmp2[100100];     memset(cmp1,0,sizeof(cmp1));     memset(cmp2,0,sizeof(cmp2));     for(i=0;i<right-left+1;i++)     {         cmp1[i]=str[left+i];         cmp2[i]=str[right-i];     }     if(strcmp(cmp1,cmp2)==0)         return true;     return false; } int main() {     int i,j,k,n,flag;     char str[100100];     cin>>n;     while(n--)     {         flag=0;         cin>>str;         for(i=0;i<strlen(str);i++)         {             if(flag==1)                 break;             for(j=0;j<=i;j++)             {                 k=strlen(str)-i;                 if(OK(str,j,j+k-1))                 {                     cout<<k<<endl;                     flag=1;                     break;                 }             }         }     }     return 0; }

    —————— G ——————

    #include <iostream> #include <string.h> #include <algorithm> using namespace std; int max(int a,int b) {     return a>b?a:b; } typedef struct {     int date,num; }node; bool cmp(node a,node b) {     return a.date<b.date; } int main() {     int n,m,i,j,k,a,b;     node G[110];     cin>>k;     while(k--)     {         a=0;         b=0;         memset(G,0,sizeof(G));         cin>>n>>m;         G[0].date=0;         G[n+1].date=101;         for(i=1;i<=n;i++)             cin>>G[i].date;         if(m>=n)         {             cout<<"100"<<endl;             continue;         }         sort(G,G+n+2,cmp);         for(i=1;i<=n;i++)         {             if(i-m-1>=0)                 a=G[i].date-G[i-m-1].date-1;             if(i+m+1<=n+1)                 b=G[i+m+1].date-G[i].date-1;             G[i].num=max(a,b);         }         for(i=2,j=G[1].num;i<=n;i++)         {             if(G[i].num>j)                 j=G[i].num;         }         cout<<j<<endl;     }     return 0; }

    —————— H ——————

    #include <iostream> using namespace std; int main() {     int num[101000],n,i;     num[1]=1;     num[2]=2;     for(i=3;i<=100000;i++)         num[i]=(num[i-1]+num[i-2])%19999997;     while(cin>>n)         cout<<num[n]<<endl;;     return 0; }

    J就不提交了,大家懂的……

    转载请注明原文地址: https://ju.6miu.com/read-1295229.html
    最新回复(0)