生活随笔
收集整理的這篇文章主要介紹了
回文平方数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
回文平方數
作者: xxx 時間限制: 1S 章節: 一維數組
問題描述 :
回文數是指從左向右念和從右向左念都一樣的數。如12321就是一個典型的回文數。 給定一個進制B(2=<B<=20進制),輸出所有的大于等于1小于等于300且該數的平方用B進制表示時是回文數的數(該數本身不要求是回文數)。
輸入說明 :
共一行,一個單獨的整數B(B用十進制表示,比如18)。
輸出說明 :
每行兩個數字,第二個數是第一個數的平方,且第二個數是回文數。
注意:輸出時,這兩個數都應該以B進制表示。
在輸出時,數字10到20分別以A到K代替。
輸入范例 :
20
輸出范例 :
1 1
2 4
3 9
4 G
11 121
22 484
25 515
33 9I9
DD 9669
#include<stdio.h>
int n
,square
,an
[1000000],bb
[1000000];
int turn(int a
,int b
){int i
;for(i
=0;;i
++){an
[i
]=b
%a
;b
=b
/a
;if(b
==0)break;}return i
;
}
int f(int n
){for(int i
=0;i
<=n
;i
++)if(an
[i
]!=an
[n
-i
])return 0;return 1;
}
void print(int a
,int b
){int i
;for(i
=0;;i
++){bb
[i
]=b
%a
;b
=b
/a
;if(b
==0)break;}for(i
=i
;i
>=0;i
--)if(bb
[i
]>9)printf("%c",bb
[i
]-10+'A');else printf("%d",bb
[i
]);
}
int main(){ int i
;scanf("%d",&n
);for(i
=1;i
<=300;i
++){square
=i
*i
;int j
=turn(n
,square
);if(f(j
)){print(n
,i
);putchar(32);for(int k
=0;k
<=j
;k
++)if(an
[k
]>9)printf("%c",an
[k
]-10+'A');else printf("%d",an
[k
]);putchar(10);}}return 0;
}
總結
以上是生活随笔為你收集整理的回文平方数的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。