码蹄杯 王国傀儡师 题型:找规律 难度:星耀

88 阅读1分钟

码题集OJ-王国傀儡师 (matiji.net)

思想

image.png

code

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
int ans;
const int mod=3333;

//1   a=b=c  对ans贡献:1
//2   a!=b!=c 对ans贡献:6 

//3   分为两种情况: 
//      a>b=c  对ans贡献3 
//      a<b<c   对ans贡献:3 

signed main()
{
	cin.tie(nullptr)->sync_with_stdio(false);
	cin>>n;
	
	//第一种情况 
	for(int i=1;i*i*i<=n;i++)
	{
		ans=(ans+1)%mod;
	}
	//第二种情况 
	for(int i=1;i*i*i<n;i++)
	{
		for(int j=i+1;i*j*j<n;j++)
		{
			int k=n/i/j-j;
			if(k>0)ans=(ans+6*k)%mod; 
		}
	}
	
    //第三种情况 
	for(int i=1;i*i*i<n;i++)
	{
		int j=n/i/i-i;
		if(j>0)ans=(ans+3*j)%mod;
	}

	for(int i=1;i*i*i<n;i++)
	{
		int j=sqrt(n/i)-i;
		if(j>0)ans=(ans+3*j)%mod;
	}
	cout<<ans<<endl;
return 0;
}

image.png