zoukankan      html  css  js  c++  java
  • 【BZOJ 2693】jzptab

    莫名其妙地又卡在long long上了,我果然又在同一个地方犯逗。

    在“在路上,同梦行”群里闹了个大笑话QAQ

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define read(x) x=getint()
    using namespace std;
    typedef long long LL;
    const int p = 1E8 + 9;
    const int N = 1E7 + 3;
    int getint() {
    	int k = 0, fh = 1; char c = getchar();
    	for(; c < '0' || c > '9'; c = getchar())
    		if (c == '-') fh = -1;
    	for(; c >= '0' && c <= '9'; c = getchar())
    		k = k * 10 + c - '0';
    	return k * fh;
    }
    bool np[N];
    int prime[N];
    LL g[N], sum[N];
    void shai() {
    	g[1] = 1; sum[1] = 1; int num = 0;
    	for(int i = 2; i <= 1E7; ++i) {
    		if (!np[i]) {
    			prime[++num] = i;
    			g[i] = ((LL)i - (LL)i * i) % p;
    		}
    		for(int j = 1; j <= num; ++j) {
    			LL t = prime[j] * i;
    			if (t > 1E7) break;
    			np[t] = 1;
    			if (i % prime[j] == 0) {g[t] = (prime[j] * g[i]) % p; break;}
    			g[t] = (g[prime[j]] * g[i]) % p;
    		}
    		sum[i] = (sum[i - 1] + g[i]) % p;
    	}
    }
    LL S(LL x, LL y) {return (x * (x + 1) / 2 % p) * (y * (y + 1) / 2 % p) % p;}
    int main() {
    	int T, n, m;
    	shai();
    	read(T);
    	while (T--) {
    		read(n); read(m);
    		if (n > m) swap(n, m);
    		LL ret = 0;
    		for(int i = 1, la = 1; i <= n; i = la + 1) {
    			la = min(n / (n / i), m / (m / i));
    			ret = (ret + (sum[la] - sum[i - 1]) * S(n / i, m / i) % p) % p;
    		}
    		printf("%lld
    ", (ret + p) % p);
    	}
    	return 0;
    }
    

    QuQ

  • 相关阅读:
    css3记事
    ele
    vue记事1
    HBuilder
    继承与面向对象设计
    实现
    设计与声明
    资源管理
    构造/析构/赋值运算
    让自己习惯C++
  • 原文地址:https://www.cnblogs.com/abclzr/p/5428021.html
Copyright © 2011-2022 走看看