求特殊天然數

(此題花了我很多時間,好在經過了。固然是用枚舉算法)

總時間限制: 

1000ms
 內存限制: 
65536kB
描述

一個十進制天然數,它的七進制與九進製表示都是三位數,且七進制與九進制的三位數碼錶示順序正好相反。編程求此天然數,並輸出顯示。ios

輸入
無。
輸出
三行:
第一行是此天然數的十進制表示;
第一行是此天然數的七進製表示;
第一行是此天然數的九進製表示。
樣例輸入
(無)
樣例輸出
(不提供)
#include<iostream>
using namespace std;
int reverse(int n)
{
    int tmp,r=0,sign;
    if(n==0) return 0;
    sign=n<0?-1:1;
    tmp=n*sign;
    do{
        r=r*10+tmp%10;
        tmp/=10;
    }while(tmp);
    return r*sign;
}

int length(int n)
{
    //求一個整數的位數 
    int x,r=0,sign;
    sign=n>0?1:-1;
    x=sign*n;
    if(x==0) return 0; 
    while(x)
    {
        r++;
        x/=10;
    }
    return r;
}
int jz(int m,int n)
{    const int b=10;
    bool isNo1=true;
    int s,r,t,i=1,result=0;
    s=m;
    while(s)
    {
        t=s/n;
        r=s%n;
        if(r==0 && i==1) { isNo1=false;i++;}  
        s=t;
        result=r%10+result*10; 
        
    }
    if(isNo1==false) return result;
    else return result*b;
}

int main()
{
    int x,y,z,n;
    //枚舉n 若n的七進制是三位數 且逆置後是等於九進制 則輸出n;
    for(int i=1;i<1000;++i)
    {
        x=jz(i,7);
        y=jz(i,9);
        z=reverse(x);
        n=length(x);
        if((n==3) && (z==y)) 
        //cout<<x<<" "<<y<<" "<<z<<" "<<n<<endl;
        cout<<i<<endl<<y<<endl<<x;      //提交時按x->y的順序輸出,結果判爲錯,只好改爲yx的順序,竟然accept
    } 

    return 0;
}
相關文章
相關標籤/搜索