NYOJ 865 解題報告

2021-07-04 02:39:34 字數 1261 閱讀 1533

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度: 3

描述 我們定義 f(x)是滿足 x  mod(a*b) == 0這樣的a,b的組數。現在給你乙個n,你需要求出 f(n)

輸入有多組測試資料。

每組測試資料輸入乙個整數n (1 <= n <= 10^11)

輸出每組測試資料輸出 case x: y ,x 表示第x組測試資料,y表示f(n)的值,細節參考樣例。

樣例輸入

123

4

樣例輸出

case 1: 1

case 2: 3

case 3: 3

case 4: 6

這道題又是考察乘性函式的題目。首先我們分析一下 x  mod(a*b) == 0這個式子,可以發現a*b其實就是x的因子。記d為x的乙個因子,那麼所有d的因子拆分d=a*b的種數就是f(n)的值。寫成數學式子,就是

到此,這道題目就解決了!不過要注意當n=1時不能用上述公式計算,而是直接輸出答案為1就好。

附上我的**:

#include int main()

if(flag==1)

sum=sum*(1+times)*(2+times)/2;}}

if(n>1)

sum=sum*3;

printf("case %d: %lld\n",case_times++,sum);

}return 0;

}

再來看看標程的:

#include #include #include #include #include #include #include #include #include using namespace std;

const int n = 1e2+10;

const int inf = 1<<30;

typedef long long ll;

ll find(ll k)

}return sum;

}ll solve(ll n)

}return sum;

}int main()

}



NYOJ 458 解題報告

時間限制 1000 ms 記憶體限制 65535 kb 難度 1 描述 最近topcoder的xd遇到了乙個難題,倘若乙個數的三次方的後三位是111,他把這樣的數稱為小光棍數。他已經知道了第乙個小光棍數是471,471的三次方是104487111,現在他想知道第m m 10000000000 個小光...

NYOJ 570 解題報告

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 題目描述很簡單,求出 ps 上面式子的意思是大於0小於n並且能整除n的所有d的尤拉函式值之和 輸入每行乙個數n n 2 31 輸入以檔案結尾結束。輸出每個結果佔一行。樣例輸入 1 212樣例輸出 0 18這道題又是一道關於數論的...

NYOJ 520 解題報告

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 greyants最近正在學習數論中的素數,但是現在他遇到了乙個難題 給定乙個整數n,要求我們求出n的最大素因子的序數,例如 2的序數是1,3的序數是2,5的序數是3,以此類推.研究數論是需要很大的耐心的,為了懲罰那些沒有耐心讀完...