CodeForces-236B-求因子个数
题目
题目大意
先算出q=i*j*k
,然后算q的因子的个数,最后把这个因子和加起来mod
上一个数
记录下求解因子个数的办法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#include <cstdio> using namespace std; const int MAXN = 1e6 + 10; const int MOD = 1073741824; int arr[MAXN];
void init() { arr[1] = 1; for(int i = 2; i < MAXN; i++) arr[i] = 2; for(int i = 2; i*i < MAXN; i++) for(int j = i; j*i < MAXN; j++) { if(i != j) arr[i*j] += 2; else arr[i*j] += 1; } }
int main() { int a, b, c; int ans = 0; init(); scanf("%d %d %d", &a, &b, &c); for(int i = 1; i <= a;i++) for(int j = 1; j <= b; j++) for(int k = 1; k <= c; k++) { ans += arr[i*j*k]; if(ans > MOD) ans %= MOD; } printf("%d\n", ans); return 0; }
|