sgu 169 Numbers 很好的數學題

2021-06-27 03:05:06 字數 870 閱讀 7703

題目大意:

對於操作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進行...