hdu多题水题习题解(2)
hdu-1408
盐水的故事
#include<stdio.h>
//using namespace std;
int main()
{
double a,b,k;
int t,i,h,l;
int time;
while(~scanf("%lf%lf",&a,&b))
{
k=a/b;
if(k-(int)k<0.000001)
k=(int)k;
else //这道题目应该考虑精度,不然的话会出错
k=(int)k+1; //我一直找不到错误在哪,改了精度之后我才发现
for(i=1;;i++)
{
l=i*(i+1)/2;
if(l>=k)
{
h=i;
break;
}
}
time=k+h-1;
printf("%d\n",time);
}
return 0;
}
How many days?
hdu-1555
#include<stdio.h>
int main()
{
int n,m,k;
while(~scanf("%d%d",&n,&m),n!=0&&m!=0)
{
k=0;
while(n-m>=0)
{
k+=m;
n=n-m+1;
}
k+=n;
printf("%d\n",k);
}
return 0;
}
hdu-1562
Guess the number
#include<stdio.h>
int main()
{
int n,i,j,a,b,c;
scanf("%d",&n);
while(n--)
{
int flag=0;
scanf("%d%d%d",&a,&b,&c);
for(i=1000;i<=9999;i++)
{
if(i%a==0&&(i+1)%b==0&&(i+2)%c==0)
{
flag=1;
break;
}
}
if(flag==1)
printf("%d\n",i);
else
printf("Impossible\n");
}
return 0;
}
hdu-1563
Find your present!
#include<stdio.h>
int main()
{
int n,i,j;
int a[220],b[220];
while(~scanf("%d",&n),n!=0)
{ int max;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<n;i++)
if(a[i]>max)
max=a[i];
printf("%d\n",max);
}
return 0;
}
七夕节
hdu-1215
#include<stdio.h>
#define MAX 510000
int main()
{
int shu[MAX+100];
int sum,i,j,k,n,m;
k=(MAX+100)/2;
for(i=1;i<k;i++)
{
for(j=i+i;j<MAX+100;j+=i) 数组开大点什么都有了。。。
shu[j]+=i;
}
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
printf("%d\n",shu[m]);
}
return 0;
}
hdu-1249
三角形
#include<stdio.h>
int main()
{
int n,i,j,m,k,t;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
printf("%d\n",3*m*(m-1)+2);
}
return 0;
} 知道公式就好办了。。。。。
这类题的解法可以参照 http://hi.baidu.com/matrixwhisper/item/6bfe48522351e0d19e266717
Reverse Number
hdu-1266
#include<stdio.h>
#include<string.h>
int main()
{
int n,m,i,j,k;
char str[200];
char ch;
scanf("%d",&n);
getchar();
while(n--)
{
int h=0;
gets(str);
k=strlen(str);
for(i=k-1;str[i]=='0';i--)
{
h++;
}
if(str[0]=='-')
{
for(i=1;i<(k-h+1)/2;i++)
{
ch=str[i];
str[i]=str[k-h-i];
str[k-h-i]=ch;
}
for(i=0;i<k;i++)
printf("%c",str[i]);
printf("\n");
}
else
{
for(i=0;i<(k-h)/2;i++)
{
ch=str[i];
str[i]=str[k-h-1-i];
str[k-h-i-1]=ch;
}
for(i=0;i<k;i++)
printf("%c",str[i]);
printf("\n");
}
// for(i=0;i<h;i++)
// printf("0");
// printf("\n");
}
//while(1);
return 0;
} 把这道题给做出来真心不容易。。。。。。。。
hdu-2147
#include<stdio.h>
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m),n!=0&&m!=0)
{
if(n%2==0||m%2==0)
printf("Wonderful!\n");
else
printf("What a pity!\n");
}
return 0;
}
这道题难了我几个小时。。。。。。
hdu-1279
验证角谷猜想
#include<stdio.h>
#include<string.h>
int main()
{
int n,m,i,j,k,t;
int a[1000];
while(~scanf("%d",&n))
{
while(n--)
{
t=0;
memset(a,0,sizeof(a));
int flag=0;
scanf("%d",&m);
while(m!=1)
{
if(m&1)
{
a[t]=m;
m=m*3+1;
t++;
flag=1;
}
else
m/=2;
}
if(flag==0)
printf("No number can be output !\n");
else
{
printf("%d",a[0]);
for(i=1;i<t;i++)
{
printf(" %d",a[i]);
}
printf("\n");
}
}
}
return 0; 一个小时。。。。。。。我去。。。
}
hdu-1290
献给杭电五十周年校庆的礼物
#include<stdio.h>
int main()
{
int n,sum;
while(~scanf("%d",&n))
{
sum=(n*n*n+5*n+6)/6;
printf("%d\n",sum);
}
return 0;
}
hdu-2710
Max Factor
#include<stdio.h>
#include<string.h>
#define maxn 40400
int sushu[maxn];
int main()
{
int i,j;
memset(sushu,0,sizeof(sushu));
//sushu[0]=1;
for(i=2;i*i<maxn;i++)
{
if(!sushu[i])
{
for(j=i*i;j<maxn;j+=i)
sushu[j]=1;
}
}
int n,r,m,num,zuida;
while(~scanf("%d",&n))
{
num=0;
zuida=0;
for(i=0;i<n;i++)
{
scanf("%d",&m);
for(r=1;r<=m;r++)
{
if(m%r==0)
if(!sushu[r])
{
if(r>num)
{
num=r;
zuida=m; 1在这里是素数,不仅要考虑到1,就算输入的那个数是素数也得算上,我提交了好多次
// flag=1;
}
}
}
// if(flag==0)
}
printf("%d\n",zuida);
}
// while(1);
return 0;
}
hdu-2700
Parity
#include<stdio.h>
#include<string.h>
int main()
{
int n,m,i,j,k,t;
char str[1000];
// getchar();
while(~scanf("%s",str),str[0]!='#')
{
t=0;
k=strlen(str);
for(i=0;i<k-1;i++)
if(str[i]=='1')
t++;
if(str[k-1]=='e'&&t%2==0)
str[k-1]='0';
if(str[k-1]=='e'&&t%2!=0)
str[k-1]='1';
if(str[k-1]=='o'&&t%2!=0)
str[k-1]='0';
if(str[k-1]=='o'&&t%2==0)
str[k-1]='1';
printf("%s\n",str);
}
return 0;
}
hdu-2568
前进
#include<stdio.h>
int main()
{
int n,m,k;
scanf("%d",&n);
while(n--)
{
k=0;
scanf("%d",&m);
while(m)
{
if(m&1)
{
k++;
m-=1;
}
else
m>>=1;
}
printf("%d\n",k);
}
return 0;
} 此题无意义,一次过。。。。。。。。。。。。
hdu-2567
寻梦
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,j,k,t;
char a[100],b[100]; 又是水题
scanf("%d",&n);
while(n--)
{
getchar();
scanf("%s %s",a,b);
k=strlen(a);
for(i=0;i<k/2;i++)
printf("%c",a[i]);
printf("%s",b);
for(i=k/2;i<k;i++)
printf("%c",a[i]);
printf("\n");
}
return 0;
}
hdu-2566
统计硬币
百钱百鸡问题。。。。
http://blog.sina.com.cn/s/blog_5c997a630100bsah.html
#include<stdio.h>
int main()
{
int T,x,y,z,n,m;
scanf("%d",&T);
while(T--)
{
int sum=0;
scanf("%d %d",&n,&m);
for(x=0;x<=n;x++)
{
for(y=0;y<=n-x;y++)
if(x+2*y+5*(n-x-y)==m)
sum++;
}
printf("%d\n",sum);
}//while(1);
return 0;
}理解了题意就比较好做了
hdu-2564
词组缩写
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,k,t,n;
char str[30000],zifu[300];
while(scanf("%d",&n)!=EOF)
{
getchar();
for(int r=0;r<n;r++)
{
memset(str,'\0',sizeof(str));
memset(zifu,'\0',sizeof(zifu));
gets(str);
k=strlen(str);
// printf("%d",k);
for(i=0;i<k;i++)
if(str[i]!=' ')
break;
zifu[0]=str[i];
// printf("%c",zifu[0]);
j=i;
for(i=j+1,t=1;i<k;i++)
{
if(str[i]!=' '&&str[i-1]==' ')
{
zifu[t]=str[i];
// printf("%c\n",zifu[t]);
t++;
}
}
// for(i=0;i<t;i++)
// printf("%c",zifu[i]);
// printf("\n");
int num=t;
for(i=0;i<num;i++)
{
if(zifu[i]>='A'&&zifu[i]<='Z')
continue;
else if(zifu[i]>='a'&&zifu[i]<='z')
zifu[i]-=32;
}
printf("%s\n",zifu);
} 做出来真心不容易,是多组测试数据,题目上没加
}//while(1);
return 0;
}
hdu-2034
人见人爱A+B
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int n,m;
int a[200];
int b[200];
int c[200];
while(~scanf("%d%d",&n,&m))
{
int count=0;
if(n==0&&m==0) 把这一个条件写到while里边也有错,我很无语,还有,为什么我刚开始的代码输出的都是一大串数字,这是怎么回事。。。。。。。
return 0;
int flag=0;
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int j=0;j<m;j++)
scanf("%d",&b[j]);
for(int i=0;i<n;i++)
{
flag=1;
for(int j=0;j<m;j++)
{
if(a[i]==b[j])
{
flag=0;
break;
}
}
if(flag!=0)
{
c[count]=a[i];
count++;
}
}
sort(c,c+count);
if(count==0)
printf("NULL");
for(int i=0;i<count;i++)
{
printf("%d ",c[i]);
}
printf("\n");
}
return 0;
}
/*#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,m;
int a[100];
int b[100];
int c[100];
while(cin>>n>>m)
{
int count=0;
if(n==0&&m==0)
{
return 0;
}
int flag=0;
for(int i=0;i<n;i++)
cin>>a[i];
for(int j=0;j<m;j++)
cin>>b[j];
for(int i=0;i<n;i++)
{
flag=1;
for(int j=0;j<m;j++)
{
if(a[i]==b[j])
{
flag=0;
break;
}
}
if(flag!=0)
{
c[count]=a[i];
count++;
}
}
sort(c,c+count);
if(count==0)
cout<<"NULL";
for(int i=0;i<count;i++)
{
cout<<c[i]<<" ";
}
cout<<endl;
}
return 0;
}*/
hdu-1276
士兵队列训练问题
#include<stdio.h>
int main()
{
int bing[6000];
int n,m,i,j,k,t;
int sum;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
for(i=1;i<=m;i++)
bing[i]=i;
sum=m;
if(sum<=3)
{
printf("1");
for(i=2;i<=m;i++)
printf(" %d",bing[i]);
printf("\n");
continue;
}
while(1)
{
int flag=0;
for(i=1;i<=m;i++)
{
if(bing[i])
flag++;
if(flag==2)
{
bing[i]=0;
sum--;
flag=0;
}
}
// printf("%d\n",sum);
if(sum<=3)
break;
flag=0;
for(i=1;i<=m;i++)
{
if(bing[i])
flag++;
if(flag==3)
{
bing[i]=0;
sum--;
flag=0;
}
}
if(sum<=3)
break;
}
sum--;
printf("1");
for(i=2;sum;i++)
{
if(!bing[i]) continue;
printf(" %d",bing[i]);
sum--;
}
printf("\n");
} 简单方法过得。。。
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理