hdu1000
仅仅是为了纪念
#include <cstdio>
int main()
{
int a,b;
while (scanf("%d%d",&a,&b)!=EOF)
{
printf("%d\n",a+b);
}
return ;
}
hdu1001
题目说n*(n+1)/2 不不会爆
但是没和你说n*(n+1)不会爆
用下面这个小方法解决 见代码
#include <iostream>
int n;
int main() {
while (scanf("%d",&n)!=EOF)
{
int sum;
if (n%==)
sum=n/*(n+);
else
sum=(n+)/*n;
printf("%d\n\n",sum);
}
return ;
}
hdu1002 高精度加 注意初始化和前导零的处理即可
#include <cstdio>
#include <cmath>
#include <cstring>
int max(int a,int b)
{
if (a>b) return a;
else return b;
}
char a[],b[],c[];
int aa[],bb[],d[];
int main() {
int T;
scanf("%d",&T);
for (int j=;j<=T;j++)
{
for (int i=;i<;i++)
{c[i] =;a[i]=;b[i]=;}
scanf("%s %s",a,b);
int la,lb;
la=strlen(a);
lb=strlen(b);
for (int i=;i<strlen(a);i++)
c[i]=a[i];
for (int i=;i<strlen(a);i++)
a[i]=c[la--i];
for (int i=;i<strlen(b);i++)
c[i]=b[i];
for (int i=;i<strlen(b);i++)
b[i]=c[lb--i];
for (int i=;i<;i++)
{d[i] =;aa[i]=;bb[i]=;}
for (int i=;i<la;i++)
aa[i]=a[i]-'';
for (int i=;i<lb;i++)
bb[i]=b[i]-'';
for (int i=;i<max(la,lb);i++)
d[i]=aa[i]+bb[i];
// for (int i=0;i<=max(la,lb);i++)
// printf("%d ",d[i]);
for (int i=;i<max(la,lb);i++)
if (d[i]>) {d[i+]+=d[i]/;d[i]=d[i]%;}
int len;
if (d[max(la,lb)]!=)
len=max(la,lb);
else len=max(la,lb)-;
printf("Case %d:\n",j);
for (int i=la-;i>=;i--) printf("%d",aa[i]);
printf(" + ");
for (int i=lb-;i>=;i--) printf("%d",bb[i]);
printf(" = ");
while (d[len]==) len=len-;
int k;
k=len;
if (k<) printf("");
for (int i=len;i>=;i--)
printf("%d",d[i]);
printf("\n");
if (j!=T) printf("\n");
}
return ;
}
hdu1003 最大子序列
直接认为不可能为零或者为负数 导致挂了很长时间 还是不能有太多的自己认为
#include <iostream>
int max(int a,int b)
{
if (a>b) return a;
else return b;
}
int a[];
int main() {
int T;
scanf("%d",&T);
for (int k=;k<=T;k++)
{
int n,ans=-;
scanf("%d",&n);
for (int i=;i<=n;i++)
scanf("%d",&a[i]);
int l=,r=,sum=;
int la=,lb=; while (r<n)
{
r+=;
sum+=a[r];
if (sum>=ans)
{
ans=sum;
la=l;
lb=r;
}
if (sum<)
{
sum=;
l=r+;
}
// printf("%d",sum);
}
printf("Case %d:\n",k);
printf("%d %d %d\n",ans,la,lb);
if (k!=T) printf("\n");
}
return ;
}