時間限制:
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這道題又是考察乘性函式的題目。首先我們分析一下 x mod(a*b) == 0這個式子,可以發現a*b其實就是x的因子。記d為x的乙個因子,那麼所有d的因子拆分d=a*b的種數就是f(n)的值。寫成數學式子,就是case 2: 3
case 3: 3
case 4: 6
到此,這道題目就解決了!不過要注意當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,以此類推.研究數論是需要很大的耐心的,為了懲罰那些沒有耐心讀完...