2011年11月4日星期五

POJ 1450 Gridland

找规律水题。。。。不过一开始还真是找不到 = =!!!!


#include
int main()
{
int n;
scanf("%d",&n);
for(int i = 1;i <= n;i ++){
int m,n;
scanf("%d%d",&m,&n);
printf("Scenario #%d:\n",i);
if(m & 1 && n & 1)printf("%d.41\n\n",m * n);  //如果m,n都是基数,则要用到一条斜边
else printf("%d.00\n\n",m * n);
}
return 0;
}

2011年11月3日星期四

POJ 1350 Cabric Number Problem

绝对坑爹的题目 = =
输入数字一定要等于4,大于或者小于都不可以。。。。
还有那个yes,no的大小写问题  = =
直接就贡献了2次WA和OLE。。。囧~

感觉代码还是很水的 = =!!


#include
#include
#include
int less(const void *p1,const void *p2)
{
return *(char*)p1 - *(char*)p2;
}
int greater(const void *p1,const void *p2)
{
return *(char*)p2 - *(char*)p1;
}
int main()
{
char a[5];
while(scanf("%s",a) && a[0] != '-'){
printf("N=%s:\n",a);
if(((a[0] == a[1]) && (a[1] == a[2]) && (a[2] == a[3])) || strlen(a) != 4){    //相同或者长度不是4的
printf("No!!\n");    //大小写。。。。囧
continue;
}
int max,min,t = atoi(a),n = 0;
while(t != 6174 && t){
qsort(a,4,sizeof(char),greater);
max = atoi(a);
qsort(a,4,sizeof(char),less);
min = atoi(a);
t = max - min;
printf("%d-%d=%d\n",max,min,t);
n ++;
if(t == 999){
printf("999-999=0\nOk!! %d times\n",n + 1);
n = 0;
break;
}
for(int i = 3,tmp = t;i >= 0;i --){
a[i] = '0' + tmp % 10;     //int转char要注意+0
tmp /= 10;
}
}
if(t != 999)printf("Ok!! %d times\n",n);
}
return 0;
}

2011年11月1日星期二

POJ 1338 ugly number

#include
int u[1510];
int main()
{
int t2,t3,t5,i,p2,p3,p5;
u[1] = 1;
p2 = p3= p5 = 1;
for(i = 2;i < 1501;i ++){
t2 = u[p2] * 2;
t3 = u[p3] * 3;
t5 = u[p5] * 5;
u[i] = t2 < t3 ? (t2 < t5 ? t2 : t5) : (t3 < t5 ? t3 : t5);
if(u[i] == t2)p2 ++;
if(u[i] == t3)p3 ++;
if(u[i] == t5)p5 ++;
}
int n;
while(scanf("%d",&n) && n)
printf("%d\n",u[n]);
return 0;
}


开始不理解题意,RE了好几次 = =
后来想了好一阵,才搞明白算法。。。
可以用heap或者PQ来做,原理一样
相对来说,这题还有点意思 = =!!