hdu多题水题习题解(1)
hdu-1021-
#include<stdio.h>
 int main()
 {
    int n;
    while(~scanf("%d",&n))
    {
       if(n%4==2)
     puts("yes");
    else
     puts("no");
    }
      return 0;
 }
hdu-2503-
a/b+c/d
 #include<stdio.h>
 #include<string.h>
 int gcb(int a,int b)
 {
  return b?gcb(b,a%b):a;
 }
 int main()
 {
   int n,a,b,c,d,k,t;
   scanf("%d",&n);
   while(n--)
   {
     scanf("%d%d%d%d",&a,&b,&c,&d);
      k=(a*d+b*c)/gcb(a*d+b*c,b*d);
   t=b*d/gcb(a*d+b*c,b*d);
   printf("%d %d\n",k,t);
   }
   return 0;
 }
hdu-2504-
又见GCD
#include<stdio.h>
 #include<string.h>
 int gcb(int a,int b)
 {
  return b?gcb(b,a%b):a;
 }
 int main()
 {
    int n,a,b,c;
    scanf("%d",&n);
    while(n--)
    {
     scanf("%d%d",&a,&b);
        for(c=1;c<a*b;c++)
     {
       if(gcb(c,a)==b&&c!=b)  
    {
     printf("%d\n",c);
              break;
    }
     }
    }
   return 0;
 }
hdu-2047-
阿牛的EOF牛肉串
#include<stdio.h>
 int main()
 {
    int i;
    __int64 n,num1,num3,num2;
    while(~scanf("%I64d",&n))
    {
      num1=3;
   num2=8;
   for(i=3;i<=n;i++)
   {
     num3=(num1+num2)*2;
     num1=num2;
     num2=num3;
   }
   if(n==1) num3=3;
   if(n==2) num3=8;
        printf("%I64d\n",num3);
    }
    return 0;
 }
hdu-2070-
Fibbonacci Number
#include<stdio.h>
 int main()
 {
    int n,i;
    __int64 f0,f1,f2=0;
    while(~scanf("%d",&n)&&n!=-1)
    {
     if(n==0)
      f2=0;
     else if(n==1)
      f2=1;
        else
     {
        f0=0;
     f1=1;
     for(i=2;i<=n;i++)
     {
       f2=f0+f1;
    f0=f1;
    f1=f2;
     }
     }
     printf("%I64d\n",f2);
    }
   return 0;
 }
hdu-2104-
hide handkerchief
 #include<stdio.h>
 #include<stdlib.h>
 int gcb(int N,int M)
 {
  return M ? gcb(M , N % M ) : N;
 }
   int main()
   {
    int N,M;
     while(~scanf("%d%d",&N,&M),N!=-1&&M!=-1)
  {
    if(gcb(N,M)==1)
     puts("YES");
    else
     puts("POOR Haha");
  }
   return 0;
   }
hdu-4548-
美素数
#include<stdio.h>
 #include<string.h>
 int a[1000010];
 int b[1000010];
 int main()
 {
     int i,j,h,l,k,num,n,m;
     int t=0;
     memset(a,0,sizeof(a));
     for(i=2;i*i<1000010;i++)
     {
       if(!a[i])
       {
         for(j=i*i;j<1000010;j+=i)
         {
           a[j]=1;
         }         
       }
     }           
          for(i=2;i<1000010;i++)
          {
            if(!a[i])
            {
               l=0;
               h=i;
               while(h)
               {
                 l+=h%10;
                 h/=10;        
               }
               if(!a[l])
                 t++;                                                                            
            } 
               b[i]=t;                                                                               
          } 
                                                             
               
       scanf("%d",&num);
       for(k=1;k<=num;k++)
       {
         scanf("%d%d",&n,&m);
         printf("Case #%d: %d\n",k,b[m]-b[n-1]);                                                             
       }                      
    return 0;    
 }
 hdu-1005-
Number Sequence
#include<stdio.h>
 int main()
 { 
   int i,n,a,b,k;
   int f[50];
   while(~scanf("%d%d%d",&a,&b,&n)&&a||b||n)
   {
     f[1]=1;
  f[2]=1;
  for(i=3;i<=49;i++)
  {
       f[i]=(a*f[i-1]+b*f[i-2])%7;
    if(f[i]==f[i-1]&&f[i]==1)
     break;
  }
   k=i-2;
   n=n%k;
   if(n==0)
    printf("%d\n",f[k]);
   else
    printf("%d\n",f[n]);
   }
   return 0;
 }
hdu-1008-
Elevator
#include<stdio.h>
 int main()
 {
   int n,i,sum;
   int a[110];
   while(~scanf("%d",&n)&&n!=0)
   {
     for(i=0;i<n;i++)
    scanf("%d",&a[i]);
      sum=a[0]*6+n*5;
  for(i=1;i<n;i++)
  {
    if(a[i]>a[i-1])
     sum+=(a[i]-a[i-1])*6;
    if(a[i]<a[i-1])
       sum+=(a[i-1]-a[i])*4;
  }
   printf("%d\n",sum);
   }
   return 0;
 }
hdu-1012
u Calculate e
#include<stdio.h>
 int jiecheng(int n)
 {
   int f;
   if(n==0||n==1)  f=1;
   else f=jiecheng(n-1)*n;
   return f;
 }
 int main()
 {
    int jiecheng(int x);
    printf("n e\n- -----------\n0 1\n1 2\n2 2.5\n");
    double f;
    int i,n;
    f=2.5;
    for(i=3;i<=9;i++)
    {
      f=f+1.0/jiecheng(i);
      printf("%d %.9lf\n",i,f);
    }
    return 0;
 }
 
hdu-1013-
Digital Roots
#include<stdio.h>
 #include<string.h>
 int digital(int n)
 {
   int t=0;
   while(n)
   {
     t+=n%10;
  n/=10;
   }
    if(t-9>=1)
     t=digital(t);
    return t;
 }
 int main()
 {
    int n,i,k;
    char s[10010];
    while(gets(s)&&s[0]!='0')
    {
      n=0;
   k=strlen(s);
   for(i=0;i<k;i++)
   {
     n+=s[i]-'0';
   }
          printf("%d\n",digital(n));
    }
   return 0;
 }
hdu-3783
ZOJ
#include<stdio.h>
 #include<string.h>
 int main()
 {
    int i,j,k,a,b,c;
    char s[110];
    while(gets(s),s[0]!='E')
    {
      k=strlen(s);
   a=b=c=0;
   for(i=0;i<k;i++)
   {
     if(s[i]=='Z')
      a++;
     else if(s[i]=='O')
            b++;
     else if(s[i]=='J')
         c++;
   }
    for(i=0;i<k;i++)
    {
      if(a)
   {
     printf("Z");
     a--;
   }
       if(b)
     {
       printf("O");
    b--;
     }
    if(c)
     {
       printf("J");
    c--;
     }
    }
       puts("");
    }
    return 0;
 }
hdu-1017
A Mathematical Curiosity
#include<stdio.h>
 int main()
 {
   int n,k,m,i,j,r;
   int T;
   scanf("%d",&T);
   for(r=0;r<T;r++)
   {
     k=1;
  while(~scanf("%d%d",&n,&m))
  {
   if(n+m==0)
           break;
     int t=0;
     for(i=1;i<n-1;i++)
       for(j=i+1;j<n;j++)
     if((i*i+j*j+m)%(i*j)==0)
      t++;
              printf("Case %d: %d\n",k++,t);
  }
   if(r!=T-1)
    printf("\n");
   }
        return 0;
 }
hdu-2565
放大的X
#include<stdio.h>
 int main()
 {
     int n,i,j,k,t,r,m;
       scanf("%d",&n);
     for(r=0;r<n;r++)
   {
        scanf("%d",&m);
     k=m/2+1;
  for(i=k-1;i>=0;i--)
  {
  for(j=1;j<=m;j++)
    {
      if(j==k-i||j==k+i)
    printf("X");
   if(j>k-i&&j<k+i)
    printf(" ");
   if(j<k-i)
    printf(" ");
    }
          printf("\n");
  }
    for(i=1;i<k;i++)
  {
    for(j=1;j<=m;j++)
    {
      if(j==k-i||j==k+i)
    printf("X");
   if(j>k-i&&j<k+i)
    printf(" ");
   if(j<k-i)
    printf(" ");
    }
          printf("\n");
  }
             printf("\n");  
   }
    return 0;
 }
方法2:
使用的是数组
#include<stdio.h>
 #include<string.h>
 int main()
 {
     char ch[82][82];
     int i,j,n,T;
     memset(ch,0,sizeof(ch));
     scanf("%d",&T);
     while(T--)
       {
         scanf("%d",&n);
         for(i=1;i<=n;i++)
         {
         for(j=1;j<=n;j++)
           {
               if(j==n+1-i||j==i)
                ch[i][j]='X';
                else
                ch[i][j]=' ';             
           }                 
         }             
         for(i=1;i<=n/2;i++)
               {
         for(j=1;j<=n;j++)
         {
               if(i+j>n+1)
               break;
               printf("%c",ch[i][j]);                 
         } 
               printf("\n");            
               }
         for(;i<=n;i++)
           {
         for(j=1;j<=i;j++)
               printf("%c",ch[i][j]);  
               printf("\n");            
           }
               printf("\n");
       }
               return 0;    
 }
 
hdu-1004
Let the Balloon Rise
#include<stdio.h>
 #include<string.h>
 char str[1010][15];
 int main()
 {
   int n,m,i,j,k;
   int a[1010];
   while(~scanf("%d",&n),n!=0)
   {
   int max=0;
   memset(a,0,sizeof(a));
     for(i=1;i<=n;i++)
   scanf("%s",str[i]);
  for(i=1;i<=n;i++)
  {
  for(j=i+1;j<=n;j++)
   if(strcmp(str[i],str[j])==0)
              a[i]++;
   if(a[i]>max)
   {
    max=a[i];
    k=i;
   }
  }
         printf("%s\n",str[k]);
   }
   return 0;
 }
hdu-1161
Eddy's mistakes
#include<stdio.h>
 #include<string.h>
 int main()
 {
   char str[1010];
   int k,i;
   while(gets(str))
   {
      k=strlen(str);
   for(i=0;i<k;i++)
   {
     if(str[i]>=65&&str[i]<=90)
      str[i]+=32;  
   }
    puts(str);
   }
   return 0;
 }
 
hdu-2024
C语言合法标识符
#include<stdio.h>
 #include<string.h>
 int main()
 {
    int n,k,i;
    char str[60];
    scanf("%d",&n);
    getchar();
    while(n--)
    {
   int flag1=0,a=0;
      gets(str);
   k=strlen(str);
      for(i=0;i<k;i++)
   {
      if(str[0]>='a'&&str[0]<='z'||str[0]>='A'&&str[0]<='Z'||str[0]=='_')
         a=0;
   else 
    flag1=1;
   if(str[i]>='0'&&str[i]<='9'||str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z'||str[i]=='_')
    a=0;
   else flag1=1;
   }
     if(flag1)
      printf("no\n");
     else
      printf("yes\n");
    }
    return 0;
 }
 
hdu-2025
查找最大元素
#include<stdio.h>
 #include<string.h>
 int main()
 {
    int k,i,j;
    char str[110],ch;
    while(~scanf("%s",str))
    {
     ch='a';
  k=strlen(str);
      for(i=0;i<k;i++)
   {
    if(str[i]>=ch)
     ch=str[i];
   }
      for(i=0;i<k;i++)
   {
    printf("%c",str[i]);
     if(str[i]==ch)
      printf("(max)");
   }
   printf("\n");
    }
    return 0;
 }
hdu-2026-
首字母变大写
#include<stdio.h>
 #include<string.h>
 int main()
 {
   int i,k;
   char s[120];
   while(gets(s))
   {
     k=strlen(s);
    s[0]-=32;
    for(i=1;i<k;i++)
    {
      if(s[i]>='a'&&s[i]<='z'&&s[i-1]==' ')
      s[i]-=32;
    }
     puts(s);
   }
   return 0;
 }
hdu-2027
统计元音
#include<stdio.h>
 #include<string.h>
 int main()
 {
   int n,r,num1,num2,num3,num4,num5,k,i;
   char str[120];
   scanf("%d\n",&n);
   for(r=0;r<n;r++)
   {    
    num1=num2=num3=num4=num5=0;
    gets(str);
       k=strlen(str);
  for(i=0;i<k;i++)
  {
    if(str[i]=='a')
     num1++;
    if(str[i]=='e')
     num2++;
    if(str[i]=='i')
     num3++;
    if(str[i]=='o')
     num4++;
    if(str[i]=='u')用getchar吸收换行符不行,我是这么做的。
     num5++;
  }
  printf("a:%d\ne:%d\ni:%d\no:%d\nu:%d\n",num1,num2,num3,num4,num5);
  if(r!=n-1)
   printf("\n");
   }
   
   return 0;
 }
 
hdu-1060
Leftmost Digit
#include<stdio.h>
 #include<math.h>
 int main()
 {
   __int64 N,num2;
   int n;
   double m;
   scanf("%d",&n);
   while(n--)
   {
    scanf("%I64d",&N);
     m=N*log10(N+0.0);
  m-=(__int64)m;
     num2=(__int64)pow(10,m);
  printf("%I64d\n",num2);
   }
  return 0;
 }
 
此题如果我自己做的话估计需要一些时日。。。。。所知道的太少了
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号