題目要求找到乙個最小進製使這個數轉為回文數,假設數字為a,那麼當進製$sta >= a$時,sta進製下a為a,僅為一位數那麼為回文數,然而當&sta=a-1&時,sta進製下數字11,也是回文數,然而題目中要求找到最小的回文數。
我們想當$sta > \sqrt a$時,轉製以後這個數為二位數,因為要為回文數,那麼第一位數和第二位數相等,我們假設都等於$j$,那麼可以得出
$$j \times sta+j=a$$
$$j \times (sta+1)=a $$
$$sta=a/j-1$$
這是很顯然的,當然j是a的乙個因子。
對於$sta \le \sqrt a$,暴力列舉判斷一下就好了,不擔心超時。
注意:迴圈變數一定寫 long long,開著int wa了2遍。
#include #include#include
#include
#include
using
namespace
std;
#define ll long longll n,a[
10000
],f;
bool
judge(ll c,ll sta)
for(ll i=1,j=pos;i<=j;i++,j--)
}returnf;}
intmain()
if(x<=3
)
ll p=(ll)sqrt((double)x)+1
;
for(ll i=2ll;i<=p;i++)
}if(!f)
}if(!f)printf("
%lld\n
",x+1
); }
}}
洛谷P2425 小紅帽的回文數
傳送門 對於本題 單個資料範圍為10 10顯然不能用intac 所以關於單個資料的變數的型別要為long long型別 不然的話,總會有幾個點會因為溢位而wa 保險起見對於此題也可以把所有變數型別都變為long long型別 不難看出對於乙個大於2的正整數n 在n 1進製下表示為1 1 在 n的進製...
洛谷P1015回文數
若乙個數 首位不為零 從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。例如 給定乙個十進位制數56,將56加65 即把5656從右向左讀 得到121是乙個回文數。又如 對於十進位制數8787 step1 87 78 165 step2 165 561 726 step3 726 627 135...
洛谷 P1015 回文數
題目描述 若乙個數 首位不為零 從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。例如 給定乙個十進位制數5656,將5656加6565 即把5656從右向左讀 得到121121是乙個回文數。又如 對於十進位制數8787 step1 8787 7878 165165 step2 165165 5...