洛谷 P1362 兔子數

2021-07-28 20:43:48 字數 1034 閱讀 5101

題目描述

設 s(n ) 表示 n 的各位數字之和,如 s(484) = 4+8+4 = 16, s(22) = 2+2 = 4。如果乙個正整數滿足 s(x*x) = s(x) *s(x),我們稱之為 rabbit n umber。比方說,22 就是乙個 rabbit n umber,因為 s(484) = s(22) *s(22)。

現在,給出乙個區間 [l, r],求在該區間內的 rabbit n umber 的個數。

輸入格式:

輸入僅一行,為空格隔開的兩個數 l 和 r。

輸出格式:

輸出僅一行乙個整數,表示所求 rabbit n umber 的個數。

輸入樣例#1:

樣例1:22 22

樣例2:484 484

樣例3:1 58

樣例4:58 484

樣例5:1000000000 1000000000

輸出樣例#1:

樣例1:1

樣例2:0

樣例3:12

樣例4:24

樣例5:1

1 <= l <= r <= 10^9

一看這道題 我就覺得是 道 數論題  然後 打表找規律  規律沒找出來 然後想分塊打表  最後寫炸了

居然是數論題~~~~~~~~~

//

感謝來自二區 鄉勇 的 題解

#include#include

using

namespace

std;

intl,r,ans;

int s[20010

],n;

void find(int x,int y,int

z)

if(y*y==b) s[++n]=x;

}if(z>r) return

;

for(int i=0;i<4;i++)

find(x*10+i,y+i,z*10);}

intmain()

洛谷 P1362 兔子數

設 s n 表示 n 的各位數字之和,如 s 484 4 8 4 16,s 22 2 2 4。如果乙個正整數滿足 s x x s x s x 我們稱之為 rabbit n umber。比方說,22 就是乙個 rabbit n umber,因為 s 484 s 22 s 22 現在,給出乙個區間 l,...

數論 洛谷 P1362 兔子數

我看到的時候一點頭緒都沒有汗 number 這題告訴你s a a s a s a 且a a 10 18 所以s a a 18 9 13 13 即s a 13 搜尋 適當剪枝即可 證明乙個定理 rabbit number的各位數字一定 3 若某數字x的一位,a 4 那麼它在該位的貢獻是a 2的 而在x...

LuoGu題解 P1362 兔子數

依題意模擬暴力打表找規律,注意到 符合題意的數中只包含 0,1,2,3 大於 3 的數,平方後都會進製,進製導致 s x s x 觀察資料範圍,最大滿足題意的數字有 10 位,那麼我們列舉每一位上的數字,然後暴力判斷是否為兔子數就行了。code include include include inc...