标签:stat static 回文数 ace include init move std gcd
目录
题意
求小于1000的所有3和5的倍数的和。
代码
#include <bits/stdc++.h>
using namespace std;
int get(int x) {
return (x+1)*x/2;
}
int solve(int n) {
return get(n/3)*3+get(n/5)*5-get(n/15)*15;
}
int main() {
cout << solve(999) << endl;
return 0;
}
题意
求小于等于4e6的值为偶数的斐波那契数的和。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> fib({1, 2});
long long res = 2;
while (1) {
int x = fib.end()[-2] + fib.end()[-1];
if (x > 4000000) break;
if (~x & 1) res += x;
fib.push_back(move(x));
}
cout << res << endl;
return 0;
}
题意
求600851475143的最大质因子。
代码
#include <bits/stdc++.h>
using namespace std;
const long long Target = 600851475143;
const int N = sqrt(Target);
vector<int> init_prime() {
static bool vis[N];
vector<int> p;
for (int i = 2; i < N; ++i) {
if (!vis[i]) p.push_back(i);
for (int j = 0; j < p.size() && p[j]*i < N; ++j) {
vis[p[j]*i] = 1;
if (i % p[j] == 0) break;
}
}
return move(p);
}
int main() {
auto p = init_prime();
long long n = Target;
long long res = 1;
for (auto &x : p) {
if (n % x == 0) res = x;
while (n % x == 0) n /= x;
}
if (n > res) res = n;
cout << res << endl;
return 0;
}
题意
求既是回文数,又是两个三位数乘积的最大数。
代码
#include <bits/stdc++.h>
using namespace std;
bool check(int x) {
vector<int> d;
do d.push_back(x % 10), x /= 10; while (x);
for (int i = 0; i + i < d.size(); ++i)
if (d[i] != d.end()[-i - 1]) return 0;
return 1;
}
int main() {
int res = 0;
for (int x = 100; x < 1000; ++x)
for (int y = 100; y < 1000; ++y)
if (check(x * y)) res = max(res, x * y);
cout << res << endl;
return 0;
}
题意
求1~20的最小公倍数。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
long long lcm=1;
for (int i=1;i<=20;++i)
lcm=lcm*i/__gcd(1ll*i,lcm);
cout<<lcm<<endl;
return 0;
}
题意
求 $(1+2+\cdots +100)^2-(1^2+2^2+\cdots +100^2)$
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int sum=5050;
int res=0;
for (int i=1;i<=100;++i)
res+=i*(sum-i);
cout<<res<<endl;
return 0;
}
标签:stat static 回文数 ace include init move std gcd
原文地址:https://www.cnblogs.com/naiij/p/9740430.html