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;
}
此題如果我自己做的話估計需要一些時日。。。。。所知道的太少了