USACO Dual Palindrome

/*
ID: nenusb1
LANG: C
TASK: dualpal
*/
#include <stdio.h>
#include <string.h>

char numStr[12];
int ifPal(){
     int len = strlen(numStr);
     int i;
     for(i=0; i<len; i++){
           if(numStr[i] != numStr[len-1-i]) return 0;//use break is stupid!
     }
     return 1;
}
//itoa
void myItoa(int value, int base){
     int i=0;     
     while(pow(base,i)<=value){
             i++;
     }
     int len = --i;
     numStr[len+1] = '\0';     
     char c[1];      
     while(value>=0 && i>=0){    
        int tmp = value % base;    
        value /= base;                  
        //convert single int to char
        numStr[len-i] = tmp+'0';       
        i--;
     }   
} 

int main(){
    freopen("dualpal.in","r",stdin);
    freopen("dualpal.out","w",stdout);
    
    int n, s;
    scanf("%d %d",&n,&s);
    
    int num, count;
    count = 0;
    for(num = s+1;count<n;num++){
       memset(numStr,'0',sizeof(numStr));

       int base;
       int palCount = 0;
       for(base = 2; base<=10; base++){
         myItoa(num,base);
         
         if(ifPal(numStr)){ palCount++;}
         if(palCount == 2) {printf("%d\n", num); count++; break;}
       }
       
    }
    
    return 0;
}

参考了http://blog.csdn.net/lisc741/article/details/8264840才AC..

将原来的

char numStr[12]

改成了全局变量,之前的Execution error 就解决了, don't konw why

转载于:https://my.oschina.net/kaneiqi/blog/194044

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值