題目大意:
對於操作p(n),為n的所有數字的成績,如p(1234)=1*2*3*4=24,如果對於n%p(n)=0,那麼我們稱n為good number,對於n與n+1都為good number,那麼n為perfect number
給定乙個數k(1<=k<=1000000
),求出位數為k的perfect number的個數
解題思路:
首先我想打表找規律,但是我後來發現打到k=7,8就差不多了,完全沒法找規律,然後我就果斷決定用數學方法做了。
我們設n的各位數為a1,a2,a3,a4,a5。。。。。。。ak, a1為個位,依次類推(顯然ai!=0),所以ai為正整數
很容易發現,對於perfect number,a1!=9,因為如果a1=9,n+1的個位就為0了,顯然是錯的
所以n+1各位數為a1+1,a2,a3,a4,a5.。。。。。。ak。
p(n)=a1*a2*a3*....*ak, p(n+1)=(a1+1)*a2*a3*.....*ak
令n=t*a1*a2*....*ak n+1=t'*(a1+1)*a2*....*ak
所以1=n+1-n=a2*a3*.....*ak*(t'*a1+a1-t*a1)
因為a1.。。。。ak為正整數
所以a2=a3=。。。。=ak=1
所以a1|n && a1+1|n+1
所以我們只需要討論a1的情況就行了(請讀者自己討論)
附上**:
//本人是純樸的c黨
#include int k=0;
int main()
printf("%d",sum);
return 0;
}
169 多數元素
解題思路 1.將陣列從小到大排序 2.第nums.length 2處的元素就是我們要求的元素,直接返回nums nums.length 2 即可 實現 class solution 解題思路 1.變數val,初始值為nums 0 記錄當前的值,計數器cnt,記錄當前元素累計出現的情況,初始值為1 2...
169 多數元素
給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。示例 1 輸入 3,2,3 輸出 3 示例 2 輸入 2,2,1,1,1,2,2 輸出 2 分析 解法一 我們可以先排序,然後輸出在陣列 現次數大於...
169 多數元素
題目描述 給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。示例 1 輸入 3,2,3 輸出 3 示例 2 輸入 2,2,1,1,1,2,2 輸出 2 方法1 直接使用unordered map進行...