PE1 Multiples of 3 or 5

ProjectEuler 链接

题意

\(\displaystyle\sum_{x=1}^{999}x\cdot[3\mid x\lor5\mid x]\)

思路

思路 1

遍历 \(1\)\(999\),直接求。

#include<iostream>
#define forUp(i,a,b) for(int i=(a);i<=(b);++i)
using namespace std;
int ans;
int main(){
	forUp(x,1,999)if(x%3==0||x%5==0)ans+=x;
	cout<<ans;
	return 0;
}

思路 2

利用容斥原理。

#include<iostream>
#define forUp(i,a,b) for(int i=(a);i<=(b);++i)
using namespace std;
int num3,num5,num15,ans;
int S(int n){
	return n*(n+1)/2;
}
int main(){
	num3=999/3,num5=999/5,num15=999/15;
	ans=3*S(num3)+5*S(num5)-15*S(num15);
	cout<<ans;
	return 0;
}
posted @ 2025-04-05 19:49  LXcjh4998  阅读(11)  评论(0)    收藏  举报