有趣的數(number)

2022-08-01 19:30:20 字數 1468 閱讀 7423

有趣的數(number)

題目描述

這些天nodgd在研究一類有趣的數。定義函式 f(n) f(n) f(n) 表示 n n n 在十進位制表示下的數字之和。如果乙個正整數 n n n 滿足 f(n)∣n f(n) \vert n f(n)∣n ,則nodgd認為 n n n 是有趣的。

例如:3 3 3,7 7 7,12 12 12,84 84 84,111 111 111,這些數都是有趣的。顯然有趣的數很多,於是nodgd想知道不超過 n n n 的所有正整數中有多少個是有趣的。

輸入格式

輸入只有一行,包含乙個正整數 n n n。

輸出格式

輸出只有一行,包含乙個整數,表示答案。

樣例樣例輸入 1

11
樣例輸出 1

10
【樣例解釋 1】

不超過 11 11 11 的所有正整數中,只有 11 11 11 不是有趣的。

樣例輸入 2

12345678
樣例輸出 2

1017860
資料範圍與提示

對於 10% 10 \% 10% 的資料,n≤106 n \leq 10^6 n≤106;

對於 30% 30 \% 30% 的資料,n≤109 n \leq 10^9 n≤109;

對於 60% 60 \% 60% 的資料,n≤1012 n \leq 10^ n≤1012;

對於 100% 100 \% 100%的資料,1≤n≤1018 1 \leq n \leq 10^ 1≤n≤1018。

solution

10^18考慮數字dp

由於數字和不超過162,我們可以先列舉他。

記f[i][x][y][0/1]表示前i位,數字和x,前i位模完為y,是否頂滿。

考場我有個變數沒開ll,悲傷的故事

1 #include2 #include3 #include4 #include5 #include6 #include7

#define ll long long

8using

namespace

std;

9 ll n,f[19][180][180][2],p[20

],ans;

10int sum,tp,n[20

];11 ll dfs(int i,int x,int y,bool

ful)

19return

s;20}21

for(int t=0;t<10;t++)

25return

s;26}27

intmain()

2837 cout

38return0;

39 }

view code

3762 有趣的數(number)

題意 記憶體限制 256 mib 時間限制 2000 ms 這些天nodgd在研究一類有趣的數。定義函式 f n f n f n 表示 n nn 在十進位制表示下的數字之和。如果乙個正整數 n nn 滿足 f n nf n vert n f n n 則nodgd認為 n nn 是有趣的。例如 3 3...

ccf 有趣的數

問題描述 我們把乙個數稱為有趣的,當且僅當 1.它的數字只包含0,1,2,3,且這四個數字都出現過至少一次。2.所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。3.最高位數字不為0。因此,符合我們定義的最小的有趣的數是2013。除此以外,4位的有趣的數還有兩個 2031和2301。請計...

ccf有趣的數

有趣的數 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 我們把乙個數稱為有趣的,當且僅當 1.它的數字只包含0,1,2,3,且這四個數字都出現過至少一次。2.所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。3.最高位數字不為0。因此,符合我們定義的最小的有趣的數是...