站外题求卡常大佬
  • 板块灌水区
  • 楼主Elysium_Guiwow
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/11 19:24
  • 上次更新2024/10/11 21:11:01
查看原帖
站外题求卡常大佬
1153156
Elysium_Guiwow楼主2024/10/11 19:24

https://www.starrycoding.com/problem/145

#include <iostream>
using namespace std;
#pragma GCC optimize(3)

#define MOD 1000000007
#define int long long
bool debug = 0;
int f[1000003];
inline int read()
{
	int x = 0,f = 1;
	char ch = getchar();
	while (ch < '0' || ch>'9')
	{
		if (ch == '-')
			f = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9')
	{
		x = (x << 1) + (x << 3) + (ch ^ 48);
		ch = getchar();
	}
	return x * f;
}

void write(int x) {
	if (x < 0) putchar('-'), x = -x;
	if (x > 9) write(x / 10);
	putchar(x % 10 + '0');
    puts("");
	return;
}
main()
{
    cout.tie(0);
    int T;
    T = read();
    while (T--)
    {
        int n = 0, ans = 0;
        n=read();
        for (int i = 1; i <= n; i+=8)
            f[i] = 0,f[i+1]=0,f[i+2]=0,f[i+3]=0,f[i+4]=0,f[i+5]=0,f[i+6]=0,f[i+7]=0;
        for (int i = n; i; --i)
        {
            f[i] = n / i * (n / i);
            for (int j = i << 1; j <= n; j += i)
                f[i] -= f[j];
            ans += f[i] * i % MOD;
        }
        write(((ans - (n * (n + 1) >> 1)) >> 1));
    }
    return 0;
}
2024/10/11 19:24
加载中...