洛谷P2425 小紅帽的回文數

2021-08-15 18:15:28 字數 910 閱讀 6298

傳送門

對於本題 單個資料範圍為10^10顯然不能用intac 所以關於單個資料的變數的型別要為long long型別

不然的話,總會有幾個點會因為溢位而wa 保險起見對於此題也可以把所有變數型別都變為long long型別

不難看出對於乙個大於2的正整數n 在n-1進製下表示為1 1   在》n的進製下也是乙個回文數

一般對於乙個大資料,常常不整體上計算,把乙個大資料拆分為小資料可以使計算更加簡便

常用的拆分方法:二分(分治)

對於此題 把其分為在x進製下是二位數的情況和在x進製下不是二位數的情況;

對於是二位數的情況 我們可以把n在x進製下的數看為jj(沒有別的意思)

所以可以得出等式 n=x*j+j=j*(x+1)  由此等式進行判斷

對於不是二位數的情況就可以直接列舉了

在我看來 本題最重要的的不外乎兩點:1,變數型別(對於ac很重要)2,分情況(對於不爆零很重要)

#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

int t;

ll x,y,tmp;

ll a[10010];

int pd(ll x,ll y)

a[flag]=y;

for(int i=1;i<=(i+flag)/2;i++)

}return 1;

}ll jc(ll x)

for(int i=x/xx-1;i>=1;--i)

}int main()

else if(y<=3)

tmp=jc(y);

cout<}

}

洛谷 2425 小紅帽的回文數

題目要求找到乙個最小進製使這個數轉為回文數,假設數字為a,那麼當進製 sta a 時,sta進製下a為a,僅為一位數那麼為回文數,然而當 sta a 1 時,sta進製下數字11,也是回文數,然而題目中要求找到最小的回文數。我們想當 sta sqrt a 時,轉製以後這個數為二位數,因為要為回文數,...

洛谷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...