mdd的煩惱
時間限制:1000 ms | 記憶體限制:65535 kb
難度:3
描述 今天mdd看到這麼一段話:在數論,對正整數n,尤拉函式是少於或等於n的數中與n互質的數的數目。此函式以其首名研究者尤拉命名,它又稱為euler』s totient function、φ函式、尤拉商數等。 例如φ(8)=4,因為1,3,5,7均和8互質。於是他想用計算機實現尤拉函式的功能,但是他又不想去寫,你能幫幫他嗎?
ps:互質(relatively primeì)又叫互素。若n個整數的最大公因數是1,則稱這n個整數互質。
一開始看到題的時候 我是這麼寫的 思路清晰 但是其實一開始就是知道會超時的 因為n很大
-輸入有多組測試資料組數小於1003, 每組測試資料有n(0
#include
#include
#include
#include
#include
using
namespace
std;
long
long fun( long
long u,long
long v)
if(u==1)
return
1; else
return0;}
int main()
else
continue;}}
}else
else
continue;}}
}// printf("\n");
printf("%lld\n",t1+1);}}
return
0;}
然而後來看了尤拉函式
尤拉函式的值 通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn為x的所有質因數,x是不為0的整數φ(1)=1(唯一和1互質的數就是1本身)。(注意:每種質因數只乙個。比如12=2*2*3,那麼φ(12)=12*(1-1/2)*(1-1/3)=4)
然後下面附上正確**:
#include
#include
#include
#include
#include
using
namespace
std;
int oula(int n)}}
if(n>1)
t*=n-1;
return t;
}int main()
return
0;}
是不是覺得這樣寫好多了呢. NYOJ 333 mdd的煩惱 尤拉函式
解題思路 尤拉函式應用,但是這個題和上個不一樣,不能打表算,因為n的範圍為整形,陣列無法存下,所以只能用最原始的素分解來寫。如下 include include include includeusing namespace std const int n 65540 int prim n void ...
南陽oj 光棍的yy 題目655
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述yy經常遇見乙個奇怪的事情,每當他看時間的時候總會看見11 11,這個很糾結啊 現在給你m個1,你可以把2個1組合成乙個2,這樣就不是光棍了 例如 111 可以拆分為 111 12 21 有三種 輸入第一行輸入乙個n表示有n個測試...
南陽OJ 1170 最大的數
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 小明和小紅在打賭說自己數學學的好,於是小花就給他們出題了,考考他們誰nb,題目是這樣的給你n個數 在這n個數之間新增n 1個 或 使結果最大,但不可以打亂原順序,請得出這個結果 如1 3 5 結果是 1 3 5 20 最大 可以...