Eular
001
#include<iostream>
using namespace std;
int is_val(int n ) {
if(n % 3 == 0 || n % 5 == 0) return 1;
return 0;
}
int main(){
int sum = 0;
for(int i = 1; i <= 1000; i++) {
if(!is_val(i)) continue;
sum+=i;
}
cout<<sum<<endl;
return 0;
}
http://oj.haizeix.com/problem/310
/*************************************************************************
> File Name: 310.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月28日 星期六 14时05分33秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 1000000
typedef long long ll;
int prime[max_n + 5] = {0};
int cnt[max_n + 5] = {0};
int r[max_n + 5] = {0};
void init() {
for(int i = 2; i <= max_n; i++) {
if(!prime[i]) {
prime[++prime[0]] = i;
}
for(int j =1; j <= prime[0]; j++) {
if(prime[j] * i > max_n) break;
prime[prime[j] * i] = 1;
if(i % prime[j] == 0) break;
}
}
return ;
}
void solve(int n) {
int tmp = n;
for(int i = 1; prime[i] <= n; i++) {
while(tmp % prime[i] == 0) {
tmp /= prime[i];
cnt[prime[i]] += 1;
}
}
}
void solve1(int n) {
for(int j = 1; j <= prime[0]; j++) {
ll tmp = prime[j], count = 0;
while(tmp <= n) {
count += n / tmp;
tmp *= prime[j];
}
if(count)
cout << prime[j] << " " << count << endl;
}
}
void print(int n) {
for(int i = 2; i <= n; i++) {
if(cnt[i]) {
cout << i << " " << cnt[i] << endl;
}
}
}
int main() {
init();
int n;
cin >> n;
/*
for(int i = 2;i <= n; i++) {
solve(i);
}
*/
solve1(n);
//print(n);
return 0;
}
#include<iostream>
using namespace std;
int main(){
int sum3=(3+999)*333/2;
int sum5=(5+995)*(995/5)/2;
int sum15=(15+(999/15)*15)*(999/15)/2;
cout<<sum3+sum5-sum15<<endl;
return 0;
}
002
1.5^n=400 0000
n=log1.5(400 0000)
所以大约估计44项
/*************************************************************************
> File Name: 002-m.cpp
> Author: ma6174
> Mail: ma6174@163.com
> Created Time: 2019年12月15日 星期日 15时06分43秒
************************************************************************/
#include<iostream>
using namespace std;
int main(){
int last = 1;
int now = 2;
int sum = 0;
while(now < 4000000){
if(now % 2 == 0){
sum += now;
cout<<now<<endl;
}
int tmp = now;
now += last;
last = tmp;
}
cout<<sum<<endl;
return 0;
}
#include<iostream>
using namespace std;
#define N 4000000
int main(){
int a, b;
int sum = 0,n = 0;
a = 0;
b = 1;
while(a + b <= N){
n += 1;
b = a + b;
a = b - a;
if(b & 1) continue;
sum += b;
}
cout<<n<<" "<<sum<<endl;
return 0;
}
#include<iostream>
using namespace std;
#define N 4000000
int main(){
int fib[3] = {0 , 1};
int sum = 0,n = 2;
while (fib[(n - 1) % 3] + fib[(n - 2) % 3] <= N){
fib[n % 3] = fib[(n - 1) % 3] + fib[(n - 2) % 3];
if(!(fib[n % 3] & 1)) sum += fib[n % 3];
n += 1;
}
cout<<sum<<endl;
return 0;
}
003
/*************************************************************************
> File Name: 003-m.cpp
> Author: ma6174
> Mail: ma6174@163.com
> Created Time: 2019年12月15日 星期日 15时10分58秒
************************************************************************/
#include<iostream>
using namespace std;
typedef long long ll;
int is_prime(int n){
for(int i=2;i<n;i++){
if(n%i==0)return 0;
}
return 1;
}
int main(){
ll n=600851475143,i;
ll ans=0;
while(n){
for(i=2;i*i<=n;i++){
while(n%i==0){
n /= i;
//cout<<i<<" "<<(is_prime(i))<<" "<<n<<" "<<is_prime(n)<<endl;
if(i>ans)ans=i;
}
}
if(is_prime(n)){
cout<<n<<endl;
return 0;
}
}
cout<<ans<<endl;
return 0;
}
#include<iostream>
using namespace std;
#define N 600851475143LL
typedef long long ll;
int main(){
ll ans = 0, M = N;
ll i = 2;
while(i * i <= M){
if(M % i == 0){
ans = i;
}
while(M % i ==0 ){
M /= i;
}
i += 1;
}
if(M > 1) {
ans = M;
}
cout<<ans<<endl;
return 0;
}
004
/*************************************************************************
> File Name: 004-m.cpp
> Author: ma6174
> Mail: ma6174@163.com
> Created Time: 2019年12月15日 星期日 15时38分22秒
************************************************************************/
#include<iostream>
#include<vector>
using namespace std;
typedef long long ll;
bool h(ll n) {
vector<ll>res;
while(n){
int d= n % 10;
res.push_back(d);
n /= 10;
}
for(ll i = 0 ;i < res.size();i++){
if(res[i]!=res[res.size()-i-1])return false;
}
return true;
}
int main(){
int ans=0;
for(int i = 999; i >=100; i--) {
for(int j = 999; j >= 100; j--){
ll cj=i*j;
if(h(cj)){
cout<<i<<" "<<j<<endl;
cout<<cj<<endl;
if(cj>ans)ans=cj;
}
}
}
cout<<ans<<endl;
return 0;
}
#include<iostream>
using namespace std;
int is_val(int n, int base){//base进制下的回文判断
int x = n, tmp = 0;
while (x){
tmp = tmp * base + x % base;
x /= base;
}
return tmp == n;
}
int main(){
int ans = 0;
for(int i = 100; i < 1000; i++) {
for(int j = 100; j<1000; j++) {
if (is_val(i * j, 10)&& i * j > ans) ans = i * j;
}
}
cout<<ans<<endl;
return 0;
}
005
#include<iostream>
using namespace std;
int gcd(int a,int b){
if(b==0)return a;
return gcd(b,a%b);
}
int main(){
int ans=1;
for(int i=1;i<=20;i++){
if(ans%i==0)continue;
ans*=i /gcd(ans, i);
}
cout<<ans<<endl;
return 0;
}
006
#include<iostream>
using namespace std;
int main(){
int sum1 = 0 , sum2 = 0;
for (int i = 1; i <= 100; i++) {
sum1 += i , sum2 += i * i;
}
cout<<sum1 * sum1 - sum2 <<endl;
return 0;
}
推导平方和公式
#include<iostream>
using namespace std;
int main(){
int sum1 = 5050;
int sum2 = ( 2000000 + 30000 +100)/6;//2n^3 + 3n^2 +n /6
cout<<sum1 * sum1 - sum2 <<endl;
return 0;
}
028
#include<iostream>
using namespace std;
int main(){
int sum = 1;
for(int l = 3; l <= 1001; l += 2) {
sum += 4 * l * l - 6 * l + 6;
}
cout<< sum <<endl;
return 0;
}
o1 将平方和等差
030
#include<iostream>
#include<cmath>
using namespace std;
#define max_n 354294
int is_val(int n){
int x=n,tmp=0;
while(x){
tmp+=(int)pow(x%10,5);
x/=10;
}
return tmp==n;
}
int f(int n){
return n*(pow(9,5));
}
int main(){
cout<<f(6)<<endl;
int sum=0;
for(int i=2;i<=max_n;i++) {
if(is_val(i))sum+=i;
}
cout<<sum<<endl;
return 0;
}
034
#include<iostream>
using namespace std;
int j(int n) {
int ret = 1;
for(int i = 1;i <= n; i++) {
ret *= i;
}
return ret;
}
int f1(int n) {
return ( n * j(9));
}
int f2(int n) {
int ret = 1;
for(int i = 1; i < n ;i++) {
ret *= 10;
}
return ret;
}
bool is_val(int n){
int tmp=0;
int d=n;
while(n){
tmp+=j(n%10);
n/=10;
}
return tmp==d;
}
int main(){
/*
for(int i=1;i<=100;i++){
if(f1(i)<f2(i))return 0;
cout<<i<<endl;
}
*/
int ans=0;
for(int i=3;i<=f1(7);i++){
if(is_val(i)){
ans+=i;
cout<<i<<endl;
}
}
cout<<ans<<endl;
return 0;
}
/*************************************************************************
> File Name: 034.cpp
> Author: ma6174
> Mail: ma6174@163.com
> Created Time: 2019年12月15日 星期日 20时02分25秒
************************************************************************/
#include<iostream>
using namespace std;
int jj[11]={0};
int j(int n) {//记忆化搜索
if(jj[n])return jj[n];
if(n==0)return 1;
if(n==1)return 1;
return jj[n]=n*j(n-1);
}
int f1(int n) {
return ( n * j(9));
}
int f2(int n) {
int ret = 1;
for(int i = 1; i < n ;i++) {
ret *= 10;
}
return ret;
}
void init_jj(){
for(int i=1;i<=9;i++){
jj[i]=j(i);
}
}
bool is_val(int n){
int tmp = 0;
int d = n;
while(n){
tmp += j(n%10);
n /= 10;
}
return tmp == d;
}
int main(){
int max = 0;
for(int i = 1; i <= 100; i++){
if(f1(i) < f2(i))break;
max = f1(i);
}
//cout<<max<<endl;
int ans = 0;
for(int i = 3; i <= max; i++){
if(is_val(i)){
ans += i;
//cout<<i<<endl;
}
}
cout<<ans<<endl;
return 0;
}
007
#include<iostream>
using namespace std;
int is_val(int n) {
for(int i = 2;i * i <= n; i++){
if(n % i == 0)return 0;
}
return 1;
}
int main() {
int i,cnt = 0;
for(i = 2, cnt = 0; cnt < 10001; i++) {
if(is_val(i)) cnt += 1;
}
cout<<i-1<<endl;
return 0;
}
#include<iostream>
using namespace std;
#define max_n 200000
int prime[max_n + 5] = {0};
void init(){
for(int i = 2; prime[0] < 10001 ;i++) {
if(prime[i]) continue;
prime[++prime[0]] = i;
for(int j = i * 2;j <= max_n; j += i) {
prime[j] = 1;
}
}
}
int main(){
init();
cout<<prime[10001]<<endl;
return 0;
}
#include<stdio.h>
#define max_n 10000
int prime[max_n + 5] = {0};
void f1(){//min
for(int i = 2; i <= max_n; i++){
if(prime[i]) continue;
for(int j = i *2; j <= max_n; j += i){
if(prime[j]) continue;
prime[j] = i;
}
}
for(int i = 2; i <= max_n; i++){
if(!prime[i])prime[i]=i;
}
int n;
while(~scanf("%d",&n)){
printf("min_prime(%d)=%d\n",n,prime[n]);
}
}
void f2(){//max
for(int i = 2; i <= max_n; i++){
if(prime[i])continue;
for(int j = i;j <= max_n; j+=i){
prime[j]=i;
}
}
int n;
while(~scanf("%d",&n)){
printf("max_prime(%d)=%d\n",n,prime[n]);
}
}
int main(){
int n;
scanf("%d",&n);
switch(n){
case 1:{
f1();
break;
}
case 2:{
f2();
break;
}
}
return 0;
}
线性筛
#include<iostream>
#include<vector>
#include<math.h>
#include<string>
#include<algorithm>
#include<iomanip>
using namespace std;
#define max 200000
int prime[max + 5] = {0};
void init() {
for (int i = 2; i <= max; i++) {
if (!prime[i]) prime[++prime[0]] = i;
for (int j = 1; j <= prime[0] && prime[j] * i <= max; j++) {
prime[prime[j] * i] = 1;
if (i % prime[j] == 0) break;
}
}
return ;
}
int main() {
init();
cout << prime[10001];
}
014
#include<stdio.h>
#define max_n 1000000
typedef long long ll;
ll get_len(ll n) {
if(n == 1) return 1;
if(n % 2 == 0) return get_len(n / 2) + 1;
return get_len(3 * n + 1) + 1;
}
int main() {
ll ans = 0, len = 0;
for(ll i = 1; i < max_n; i++) {
ll tmp=get_len(i);
if(tmp > len) {
ans = i;
len = tmp;
}
}
printf("num = %lld,len = %lld\n", ans, len);
return 0;
}
记忆化
#include<stdio.h>
#define max_n 1000000
int keep[max_n + 5] = {0};
typedef long long ll;
ll get_len(ll n) {
if(n == 1) return 1;
if(n <= max_n && keep[n]) return keep[n];
ll ret = 0;
if(!(n & 1)) ret = get_len(n >> 1) + 1;
else ret = get_len(3 * n + 1) + 1;
if(n <= max_n ) keep[n] = ret;
return ret;
}
int main() {
ll ans = 0, len = 0;
for(ll i = 1; i < max_n; i++) {
ll tmp=get_len(i);
if(tmp > len) {
ans = i;
len = tmp;
}
}
printf("num = %lld,len = %lld\n", ans, len);
return 0;
}
017
#include<stdio.h>
int get_letters(int n) {
int arr1[20] = {
0, 3, 3, 5, 4, 4, 3, 5, 5, 4, 3,
6, 6, 8, 8, 7, 7, 9, 8, 8
};
int arr2[10] = {
0, 0, 6, 6, 5, 5, 5, 7, 6, 6
};
if (n < 20) {
return arr1[n];
}
else if (n < 100) {
return arr2[n / 10] + arr1[n % 10];
}
else if (n < 1000) {
if(n % 100 == 0) {
return arr1[n / 100] + 7;
}
return arr1[n / 100] + 10 + get_letters(n % 100);
}
else{
return 11;
}
}
int main() {
int sum = 0;
for(int i = 1; i <= 1000; i++) {
sum += get_letters(i);
}
printf("%d\n",sum);
return 0;
}
013
大整数
#include<stdio.h>
#include<string.h>
#define max_n 52
char str[max_n + 5] ={0};
int ans[max_n +5] = {0};
int main() {
while (~scanf("%s", str)) {
int len = strlen(str);
if (len > ans[0]) ans[0] = len;
for (int i = 0; i < len; i++) {
ans[len -i] += str[i] - '0';
}
for (int i = 1; i <= ans[0]; i++) {
if (ans[i] < 10) continue;
ans[i + 1] += ans[i] / 10;
ans[i] %= 10;
ans[0] += (i == ans[0]);
}
}
for(int i = ans[0]; i > ans[0] - 10; i--) {
printf("%d", ans[i]);
}
printf("\n");
return 0;
}
a的b次方
#include<stdio.h>
#define max_n 500
void solve(int a, int b) {
int ans[max_n + 5] = {0};
ans[0] = 1, ans[1]= 1;
for(int i = 0; i < b; i++) {
for(int j = 1;j <= ans[0]; j++) {
ans[j] *= a;
}
for (int k = 1; k <= ans[0]; k++) {
if(ans[k] < 10) continue;
ans[k+1] += ans[k] / 10;
ans[k] %= 10;
ans[0] += (k == ans[0]);
}
}
for(int i = ans[0]; i > 0; i--) {
printf("%d",ans[i]);
}
printf("\n");
}
int main() {
int a, b;
while(~scanf("%d%d", &a, &b)) solve(a, b);
return 0;
}
haizeioj54
#include<iostream>
#include<cstdio>
using namespace std;
#define max_n 1000000
void solve(int x) {
int ans[max_n + 5] = {0};
ans[0] = 1;
ans[1] = 1;
for(int i = 2; i <= x; i++) {
for(int j = 1; j <= ans[0] ;j++) {
ans[j] *= i;
}
for(int k = 1; k <= ans[0]; k++) {
if(ans[k] < 10) continue;
ans[k + 1] += ans[k] / 10;
ans[k] %= 10;
ans[0] += (k == ans[0]);
}
}
int res[max_n]={0};
res[0]=1;
res[1]=1;
for(int i = ans[0]; i > 0; i--) {
if(ans[i]){
for(int i1 = 1; i1<= res[0];i1++) {
res[i1] *= ans[i];
}
for(int k = 1;k <= res[0];k++) {
if(res[k] < 10) continue;
res[k + 1] += res[k] / 10;
res[k] %= 10;
res[0] += (k == res[0]);
}
}
}
for(int i = res[0]; i > 0 ;i--) {
printf("%d",res[i]);
}
printf("\n");
}
int main() {
int x;
while(~scanf("%d",&x)) {
solve(x);
}
return 0;
}
高精度*高精度
haizeioj 471
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define max_n 100
char str_a[max_n + 5];
char str_b[max_n + 5];
int a[max_n + 5];
int b[max_n + 5];
int c[max_n * 2 + 5];
int main() {
memset(c, 0, sizeof(c));
cin >> str_a>> str_b;
int len_a = strlen(str_a);
int len_b = strlen(str_b);
for (int i = 0; i < len_a; i++) {
a[i] = str_a[len_a - i -1] - '0';
}
for (int i = 0; i < len_b; i++) {
b[i] = str_b[len_b - i -1] - '0';
}
for(int i = 0; i < len_a; i++) {
for(int j = 0; j < len_b; j++) {
c[i + j] += a[i] * b[j];
if(c[i + j] < 10 ) continue;
c[i + j + 1] += c[i + j] / 10;
c[i + j] %=10;
}
}
int len_c = len_a + len_b;
while(!c[len_c]) len_c--;
for(int i = len_c; i >= 0; i--) {
printf("%d",c[i]);
}
printf("\n");
return 0;
}
20191222
va_start 第二个参数用来标记前一个参数
025
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int f[3][1005];
int main() {
int n = 2;
f[1][0] = 1;
f[1][1] = 1;
f[2][0] = 1;
f[2][1] = 1;
while (f[n % 3][0] < 1000) {
n += 1;
int *a = f[n % 3], *b = f[(n -1 ) % 3], *c = f[(n - 2) % 3];
for(int i = 1; i <= b[0]; i++) {
a[i] = b[i] + c[i];
}
a[0] = b[0];
for(int i = 1; i <= a[0]; i++) {
if(a[i] < 10) continue;
a[i + 1] += a[i] / 10;
a[i] %= 10;
a[0] += (i == a[0]);
}
}
printf("%d\n", n);
return 0;
}
031
#include<iostream>
using namespace std;
#define max_n 8
#define max_m 200
int w[max_n + 5] = {
1, 2, 5, 10, 20, 50, 100, 200
};
int f[2][max_m + 5];
int main() {
for(int k = 0; k < max_n; k++) {
int i = k % 2;
f[i][0] = 1;
for(int j = 1; j <= max_m;j++) {
f[i][j] = 0;
f[i][j] += f[i ^ 1][j];
if(j >= w[k])
f[i][j] += f[i][j - w[k]];
}
}
cout << f[(max_n - 1) % 2][max_m] << endl;
return 0;
}
#include<iostream>
using namespace std;
#define max_n 8
#define max_m 200
int w[max_n + 5] = {
1, 2, 5, 10, 20, 50, 100, 200
};
int f[max_m + 5]={0};
int main() {
f[0] = 1;
for(int i = 0; i < max_n; i++) {
for(int j = 1; j <= max_m;j++) {
if(j >= w[i]) f[j] += f[j - w[i]];
}
}
cout << f[max_m] << endl;
return 0;
}
032
/*************************************************************************
> File Name: 032-m.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月22日 星期日 15时34分25秒
************************************************************************/
#include<iostream>
#include<vector>
#include<set>
#include<algorithm>
using namespace std;
#define max_n 2000
vector<int>tmp;
bool is_val(int a, int b, int c) {
int cnt = 0;
vector<int>res;
while (a) {
res.push_back(a % 10);
a /= 10;
cnt++;
}
while (b) {
res.push_back(b % 10);
b /= 10;
cnt++;
}
while (c) {
res.push_back(c % 10);
c /= 10;
cnt++;
}
if(cnt > 9)return false;
sort(res.begin(), res.end());
return res == tmp;
}
int main() {
set<int>ans_tmp;
int ans = 0;
for(int i = 1; i <= 9; i++){
tmp.push_back(i);
}
for(int i = max_n; i >= 1; i--) {
for(int j = max_n; j >= 1; j--) {
int cj = i * j;
if(is_val(i, j, cj)) {
ans_tmp.insert(cj);
cout<<i<<"*"<<j<<"="<<cj<<endl;
}
}
}
set<int>::iterator p;
for(p = ans_tmp.begin(); p != ans_tmp.end(); p++) {
ans += *p;
}
cout << ans << endl;
return 0;
}
#include<stdio.h>
#include<cmath>
#define max_n 10000
int keep[max_n + 5] = {0};
int add_to_num(int *num, int n) {
while (n) {
if(num[n % 10]) return 0;
num[n % 10] += 1;
n /= 10;
}
return 1;
}
int digits(int n) {
if(n == 0) return 1;
return floor(log10(n)) + 1;
}
int is_val(int a, int b) {
if(digits(a) + digits(b) + digits(a * b) - 9 ) return 0;
int num[10] = {0};
int flag = 1;
num[0] = 1;
flag = flag && add_to_num(num, a);
flag = flag && add_to_num(num, b);
flag = flag && add_to_num(num, a * b);
return flag;
}
int main() {
int sum = 0;
int tmp[100];
tmp[0] = 1;
for (int a = 1; a < 100; a++) {
for (int b = a + 1; b < 10000; b++) {
if(!is_val(a, b)) continue;
if(keep[a * b]) continue;
sum+= a * b;
keep[a * b] = 1;
}
}
printf("%d\n", sum);
return 0;
}
033
#include<iostream>
using namespace std;
#define max_n 99
int gcd(int a, int b) {
if(b == 0) return a;
return gcd(b, a % b);
}
int is_val(int a, int b, int c) {
if(a == b) return false;
return (a * 10 + c) * b == (c * 10 + b) * a;
}
void solve() {
int sum1 = 1 , sum2 = 1;
for(int i = 1;i <= 9; i++) {
for(int j = 1; j <= 9; j++) {
for(int k = 1; k <= 9; k++) {
if(is_val(i, j, k)){
sum1 *= i;
sum2 *= j;
cout <<i << j<< k <<endl;
}
}
}
}
cout<<sum1<<" "<<sum2<<endl;
cout<<sum2/gcd(sum1,sum2)<<endl;
}
int main() {
solve();
return 0;
}
035
#include<iostream>
#include<cmath>
using namespace std;
#define max_n 1000000
int prime[max_n + 5] = {0};
void init() {
prime[1] = 1;
for(int i = 2; i <= max_n; i++) {
if(prime[i])continue;
for(int j = 2; j * i <= max_n; j++) {
prime[j * i] = 1;
}
}
}
int is_val(int n) {
if(prime[n])return false;
int d = pow(10, floor(log10(n)));
int w = floor(log10(n)) + 1;
int x = n;
for(int i = 0; i < w; i++) {
x = x / 10 + x % 10 * d;
if(prime[x]) return false;
}
return true;
}
int main() {
init();
int ans = 0;
for(int i = 1; i <= max_n; i++) {
if(is_val(i)) {
ans++;
cout << i << endl;
}
}
cout << ans << endl;
return 0;
}
037
#include<iostream>
#include<cmath>
using namespace std;
#define max_n 1000000
int prime[max_n + 5] = {0};
void init() {
prime[1] = 1;
for(int i = 2; i <= max_n; i++) {
if(prime[i]) continue;;
for(int j = 2; j * i <= max_n; j++) {
prime[j * i] = 1;
}
}
}
int is_val(int n) {
if(prime[n]) return false;
while (n) {
int d =pow(10, floor(log10(n)));
n %= d;
if(prime[n]) return false;
}
return true;
}
int is_val2(int n) {
while (n) {
n /= 10;
if(prime[n])return false;
}
return true;
}
int main() {
init();
int ans = 0;
int sum = 0;
for(int i = 8; i <= max_n; i++) {
if(is_val(i) && is_val2(i)){
ans++;
sum += i;
}
}
cout << ans << endl;
cout << sum << endl;
return 0;
}
038
/*************************************************************************
> File Name: 038-m.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月22日 星期日 19时23分58秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 10000
int ans = 0;
int is_val(int n,int i) {
int cnt = 0;
int ret = 0;
int num[10] = {0};
for(int j = i; j >= 1; j--) {
int tmp = j * n;
while (tmp) {
if(tmp % 10 == 0) return 0;
ret = ret * 10 + tmp % 10;
if(num[tmp % 10]) return 0;
num[tmp % 10] = 1;
tmp /= 10;
cnt++;
}
}
if(cnt != 9)return 0;
int tmp = 0;
while (ret) {
tmp = tmp * 10 + ret % 10;
ret /= 10;
}
return tmp;
}
int main() {
cout << is_val(192,3)<<endl;
for(int i = 1; i <= max_n; i++) {
for(int j = 1; j <= 9; j++) {
if(is_val(i, j)) {
if(ans < is_val(i, j))
ans = is_val(i, j);
cout << i << endl;
}
}
}
cout << ans << endl;
return 0;
}
a * n
a最多是四位
#include<stdio.h>
#include<math.h>
typedef long long ll;
int digits(int n) {
if (n == 0) return 1;
return floor(log10(n)) + 1;
}
int calc(int x) {
ll n = 1, ans = 0;
while (digits(ans) < 9) {
ans *= pow(10, digits(x * n));
ans += n * x;
n += 1;
}
if(digits(ans) - 9) return 0;
int num[10] = {1, 0};
int tmp = ans;
while (tmp) {
if(num[tmp % 10]) return 0;
num[tmp % 10] += 1;
tmp /= 10;
}
return ans;
}
int main() {
long long ans = 0;
for(int i = 1; i <= 10000; i++) {
int tmp = calc(i);
if(tmp > ans) ans = tmp;
}
printf("%lld\n", ans);
return 0;
}
043
/*************************************************************************
> File Name: 043-m.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月22日 星期日 19时50分17秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 10000
int ans[200] = {0};
int w[7] = {2, 3, 5, 7, 11, 13, 17};
int is_val(int s[10]) {
for(int i = 2; i <= 8; i++) {
int sum = s[i] * 100 + s[i + 1] * 10 + s[i + 2];
//cout << sum << endl;
if(sum % w[i - 2] != 0)return 0;
}
return 1;
}
void go(int s[10], int now, int num[10]) {
if(now == 10) {
for(int i = 1; i <= 10; i++){
cout<<s[i];
}
cout<<endl;
if(!is_val(s))return;
for(int i = 1; i <= 10; i++){
cout<<s[i];
ans[10 - i + 1] += s[i];
}
cout << endl;
return ;
}
for(int i = 0; i <= 9; i++) {
if(!num[i]) {
num[i] = 1;
s[now + 1] = i;
go(s, now + 1, num);
num[i] = 0;
}
}
}
int main() {
int s[10] = {0},num[10] = {0};
go(s, 0, num);
int test[]={0,1,4,0,6,3,5,7,2,8,9};
cout<< is_val(test)<<endl;
ans[0] = 10;
for(int i = 1; i <= ans[0]; i++) {
if(ans[i] < 10) continue;
ans[i+ 1] += ans[i] / 10;
ans[i] %= 10;
ans[0] += (i == ans[0]);
}
for(int i = ans[0]; i > 0; i--) {
cout << ans[i];
}
cout << endl;
return 0;
}
020
/*************************************************************************
> File Name: 020-m.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月22日 星期日 20时37分06秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 500
int ans[max_n + 5] = {1,1,0};
void solve () {
for(int j = 1; j <= 100; j++) {
cout << j << endl;
for(int i = 1; i <= ans[0]; i++) {
ans[i] *= j;
/*
for(int k = 1; k <= ans[0]; k++) {
if(ans[k] < 10) continue;
ans[k + 1] += ans[k] / 10;
ans[k] %= 10;
ans[0] += (k == ans[0]);
}
*/
}
for(int k = 1; k <= ans[0]; k++) {
if(ans[k] < 10) continue;
ans[k + 1] += ans[k] / 10;
ans[k] %= 10;
ans[0] += (k == ans[0]);
}
}
}
int main() {
solve();
cout << ans[0]<<endl;
int sum = 0;
for(int i = 1; i <= ans[0]; i++) {
cout << ans[i];
sum += ans[i];
}
cout << endl;
cout<< sum << endl;
return 0;
}
009
https://projecteuler.net/problem=9
http://pe-cn.github.io/9/
#include<cstdio>
#include<iostream>
using namespace std;
int is_val(int a, int b) {
int c = 1000 - a - b;
if(!(a < b && b < c)) return 0;
return ((a * a) + (b * b) == (c * c));
}
int main() {
for(int a = 1; a < 1000; a++) {
for (int b = 1; b < 1000; b++) {
if(is_val(a, b)) {
cout<<a<<" "<<b<<" "<<(1000 - a - b)<<endl;
cout<<a * b * (1000 - a - b) << endl;
break;
}
}
}
return 0;
}
证明性质三:使用反证法。
证明性质4:
/*************************************************************************
> File Name: 009.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月26日 星期四 19时02分38秒
************************************************************************/
#include<iostream>
#include<cmath>
using namespace std;
int gcd(int a, int b) {
return (b ? gcd(b, a % b) : a);
}
int main() {
int ans = 0;
for (int n = 1; n <= 33; n++) {
for(int m = n + 1; m * m + n * n < 1000; m++) {
if(gcd(m, n) - 1) continue;
int a = 2 * m * n, b = m * m - n * n, c = m * m + n * n;
if(1000 % (a + b + c) == 0) {
int k = 1000 / (a + b + c);
ans = a * b * c * pow(k, 3);
}
if(ans) break;
}
if(ans) break;
}
cout << ans << endl;
return 0;
}
012
/*************************************************************************
> File Name: 012.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月26日 星期四 19时49分16秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 1000000
int prime[max_n + 5] = {0};
int f[max_n + 5] = {0};
int cnt[max_n + 5] = {0};
void init() {
for (int i = 2; i <= max_n; i++) {
if (!prime[i]) {
prime[++prime[0]] = i;
f[i] = 2;
cnt[i] = 1;
}
for (int j = 1; j <= prime[0]; j++) {
if (prime[j] * i > max_n) break;
prime[prime[j] * i] = 1;
if (i % prime[j] == 0) {
f[i * prime[j]] =f[i] / (cnt[i] + 1) * (cnt[i] + 2);
cnt[i * prime[j]] = cnt[i] + 1;
break;
}
else {
f[i * prime[j]] = f[prime[j]] * f[i];
cnt[prime[j] * i] = 1;
}
}
}
return ;
}
int main() {
init();
int n = 1, fac = 0;
while (fac < 500) {
if(n & 1) {
fac = f[n] * f[(n + 1) >> 1];
}
else {
fac = f[n >> 1] * f[n + 1];
}
n += 1;
}
n -= 1;
cout << n * (n + 1) / 2 << endl;
return 0;
}
/*
012-m.cpp
*/
#include<iostream>
#include<cstdio>
using namespace std;
int num(int n) {
int i, sum = 0, j;
for(i = 1; i * i<= n; i++) {
if(n % i ==0) {
sum++;
j = i;
//cout << j << endl;
}
}
//cout << j << endl;
return (j * j == n) ? (2 * sum - 1) :2 * sum;
}
int main() {
int tmp = 0;
int i = 1;
cout << num(28) << endl;
while(num(tmp)<=500) {
tmp += i;
if(tmp <= 28)
cout << tmp << " " << num(tmp) << endl;
i++;
}
cout << tmp << endl;
return 0;
}
015
https://projecteuler.net/problem=15
组合问题
c40(20)
40*…21
/20…*1
#include<iostream>
#include<cstdio>
using namespace std;
#define max_n 20
typedef long long ll;
ll dp[max_n + 5][max_n + 5] = {0};
void solve() {
for(int i = 0; i <= max_n; i++) {
dp[i][0] = 1;
dp[0][i] = 1;
}
for(int i = 1; i<= max_n; i++) {
for(int j = 1; j <= max_n; j++) {
dp[i][j] += dp[i-1][j];
dp[i][j] += dp[i][j-1];
}
}
cout << dp[max_n][max_n] << endl;
}
int main() {
solve();
return 0;
}
/*************************************************************************
> File Name: 015.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月28日 星期六 15时33分28秒
************************************************************************/
#include<iostream>
using namespace std;
int main() {
long long m = 40, n = 20, ans = 1;
while (m != 20 || n) {
if (m != 20) {
ans *= (m--);
}
if(n != 0 && ans % n == 0) {
ans /= (n--);
}
}
cout << ans << endl;
return 0;
}
016
/*************************************************************************
> File Name: 016.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月28日 星期六 15时54分34秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 400
int ans[max_n + 5] = {1, 1, 0};
int main() {
for(int i = 0; i < 100; i++) {
for(int j = 1; j <= ans[0]; j++) ans[j] *= 1024;
for(int j = 1; j <= ans[0]; j++) {
if(ans[j] < 10) continue;
ans[j + 1] += ans[j] / 10;
ans[j] %= 10;
ans[0] += (j == ans[0]);
}
}
int sum = 0;
for(int i = 1; i <= ans[0]; i++) {
sum += ans[i];
}
cout << sum << endl;
return 0;
}
#include<iostream>
#include<cstdio>
using namespace std;
#define max_m 500
#define c 2
int sum[max_m + 5] = {0};
int res[max_m + 5] = {1,1,0};
int ans = 0;
void solve(int max_n) {
for(int i = 2; i <= max_m; i++) res[i] = 0;
for(int i = 1; i <= max_n; i++) {
for(int j = 1; j <= res[0]; j++) {
res[j] *= c;
}
for(int k = 1; k <= res[0]; k++) {
if(res[k] < 10) continue;
res[k + 1] += res[k] / 10;
res[k] %= 10;
res[0] += (k == res[0]);
}
}
//cout << res[0]<< endl;
for(int i = res[0]; i >= 1; i--) {
cout << res[i];
ans += res[i];
}
cout << endl;
cout << ans << endl;
}
int main() {
int n;
cin >> n;
solve(n);
return 0;
}
018
/*************************************************************************
> File Name: 018-1.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月28日 星期六 16时53分03秒
************************************************************************/
#include<iostream>
#include<algorithm>
using namespace std;
#define max_n 20
int val[max_n][max_n] = {0};
int main() {
for (int i = 0; i < max_n; i++) {
for(int j = 0; j <= i; j++) {
cin >> val[i][j];
}
}
for(int i = max_n - 2; i >= 0; i--) {
for(int j = 0; j <=i; j++) {
val[i][j] += max(val[i + 1][j], val[i + 1][j + 1]);
}
}
cout << val[0][0] << endl;
return 0;
}
/*************************************************************************
> File Name: 018.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月28日 星期六 16时20分32秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 20
int val[max_n][max_n] = {0};
int ans[max_n][max_n] = {0};
int dfs(int i, int j, int n) {
if(ans[i][j]) return ans[i][j];
if(i + 1 == n) return ans[i][j];
int val1 = dfs(i + 1, j, n);
int val2 = dfs(i + 1, j + 1, n);
ans[i][j] = (val1 > val2 ? val1 : val2) + val[i][j];
return ans[i][j];
}
int main() {
for (int i = 0; i < 15; i++) {
for (int j = 0; j <= i; j++) {
cin >> val[i][j];
}
}
cout << dfs(0, 0, max_n) << endl;
return 0;
}
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define max_n 15
int dp[max_n + 5][max_n + 5] = {0};
void print() {
for(int i = 0; i <max_n ; i++) {
for(int j = 0;j <= i; j++) {
cout<<dp[i][j]<< " ";
}
cout << endl;
}
}
void solve() {
for(int i = 0; i < max_n; i++) {
for(int j = 0; j <= i; j++) {
cin >> dp[i][j];
}
}
for(int i = 1; i< max_n; i++) {
for(int j = 0; j <= i; j++) {
if(j == 0) dp[i][j] += dp[i - 1][j];
else if(j == i) dp[i][j] += dp[i - 1][j -1];
else dp[i][j] += max(dp[i - 1][j], dp[i -1][j -1]);
}
}
print();
int ans = 0;
for(int i = max_n -1; i >= 0; i--) {
if(dp[max_n - 1][i] > ans) ans = dp[max_n - 1][i];
}
cout << ans << endl;
}
int main() {
solve();
return 0;
}
022
#include<iostream>
#include<inttypes.h>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define max_n 6000
string s[max_n];
int64_t ans[max_n] = {0};
int fuck[500] = {1,0};
void add(int n) {
fuck[1] += n;
for(int i = 1;i <= fuck[0]; i++) {
if(fuck[i] < 10) continue;
fuck[i+1] += fuck[i] / 10;
fuck[i] %= 10;
fuck[0] += (i == fuck[0]);
}
}
void print() {
for(int i = fuck[0]; i > 0; i--) {
cout << fuck[i] ;
}
cout << endl;
}
int count(string s, int j) {
int sum = 0;
for(int i = 0; i < s.size(); i++) {
sum += (s[i] - 'A' + 1);
}
return sum * j;
}
int main() {
char x;
int i = 0, cnt = 0;
string tmp = "";
while (scanf("%c",&x)!=EOF) {
if (x == '"') {
cnt++;
if(cnt % 2){
}
else{
s[i] = tmp;
tmp = "";
i++;
}
}
else if(x != ','){
tmp = tmp + x;
}
}
sort(s,s+i);
for(int j = 0; j < i;j++ ) {
if(count(s[j], j + 1) < 0) {
cout << s[j] <<" " << count(s[j], j + 1);
}
add(count(s[j],j+1));
}
print();
return 0;
}
024
第k个排列找规律
/*************************************************************************
> File Name: 024-m-1.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月28日 星期六 19时10分15秒
************************************************************************/
#include<iostream>
using namespace std;
int f(int n) {
int ret = 1;
for(int i = 1; i <=n ;i++) {
ret *= i;
}
return ret;
}
void print(int n, int k) {
int num[n + 5];
for (int i = 0; i < n; i++) num[i] = i;
int i = n;
while (i >= 0) {
if (f(i - 1) <= k) {
int flag = 1;
int d = k / f(i - 1);
k %= f(i - 1);
int cnt = 0;
for (int j = 0; j < n; j++) {
if (num[j] != -1)cnt++;
if(cnt == d + 1 && num[j] != -1){
cout << num[j];
num[j] = -1;
}
}
}
else {
int flag = 1;
for(int j = 0; j < n && flag; j++) {
if(num[j] != -1) {
cout << num[j];
num[j] = -1;
flag = 0;
}
}
}
i--;
}
return ;
}
int main() {
int n,k;
while(cin >> n >> k) print(n, k - 1);
return 0;
}
#include<iostream>
#include<cstdio>
using namespace std;
#define max_n 10
int cnt = 0;
void print(int ans[]) {
for(int i = 0; i < max_n; i++) {
cout << ans[i];
}
cout << endl;
}
void go(int now,int num[],int ans[]) {
if(cnt > 1000000) return ;
if(now == max_n) {
//print(ans);
cnt++;
if(cnt == 1000000) {
cout<<"ans ";
print(ans);
}
return ;
}
for(int i = 0; i < max_n; i++) {
if(num[i]) continue;
ans[now] = i;
num[i] = 1;
go(now + 1, num, ans);
num[i] = 0;
}
}
int main() {
int num[max_n] = {0};
int ans[max_n] = {0};
go(0, num, ans);
return 0;
}
039
/*************************************************************************
> File Name: 039.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月29日 星期日 15时04分51秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 1000
int cnt[max_n + 5] = {0};
int gcd(int a, int b) {
return (b ? gcd(b, a % b) : a);
}
int main() {
for(int n = 1; n <= 32; n++) {
for(int m = n + 1; m <= 32; m++) {
if(gcd(m, n) - 1) continue;
int a = m * m - n * n;
int b = 2 * m * n;
int c = m * m + n * n;
for(int p = a + b + c; p <= 1000; p += (a + b + c)) {
cnt[p] += 1;
}
}
}
int ans = 0;
for(int i = 1; i <= max_n; i++) {
if(cnt[i] > cnt[ans]) ans = i;
}
cout << ans << endl;
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
int is_sjx(int a, int b, int c) {
if(!(a < b && b < c)) return 0;
return a*a + b * b == c * c;
}
int count(int n) {
int ret = 0;
for(int i = 1;i < n - 1; i++) {
for(int j = 1; j < n -1; j++) {
int k = n - i - j;
if(k) {
if(is_sjx(i, j, k)) {
//cout << i << " " << j << " " << k << endl;
ret++;
}
}
}
}
return ret;
}
int main() {
int max = 0;
int ans = 0;
for(int i = 3; i <= 1000; i++) {
int tmp = count(i);
if(tmp > max) {
max = tmp;
ans = i;
}
}
cout << ans << endl;
cout << max << endl;
return 0;
}
010
/*************************************************************************
> File Name: 010-m.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月24日 星期二 18时16分18秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 2000000
int prime[max_n + 5] = {0};
int ans[500] = {0};
void init() {
prime[1] = 1;
for(int i = 2; i <= max_n; i++) {
if(prime[i]) continue;
for(int j = 2; j * i <= max_n; j++) {
prime[j * i] = 1;
}
}
}
void solve() {
init();
ans[0] = 1;
for(int i = 1; i < max_n; i++) {
if(prime[i]) continue;
ans[1] += i;
for(int j = 1; j <= ans[0]; j++) {
if(ans[j] < 10) continue;
ans[j + 1] += ans[j] / 10;
ans[j] %= 10;
ans[0] += (j == ans[0]);
}
}
for(int i = ans[0]; i > 0; i--) {
cout<< ans[i];
}
cout << endl;
}
int main() {
solve();
return 0;
}
044
/*************************************************************************
> File Name: 044.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月24日 星期二 18时59分10秒
************************************************************************/
#include<stdio.h>
#include<inttypes.h>
#include<iostream>
using namespace std;
typedef long long int1;
int1 Pentagonal(int1 n) {
return n * (3 * n - 1) / 2;
}
int1 binary_search(int1 (*func)(int1), int1 n, int1 x) {
int1 head = 1, tail = n, mid;
while(head <= tail) {
mid = (head + tail) >> 1;
if (func(mid) == x) return mid;
if(func(mid) < x) head = mid + 1;
else tail = mid -1;
}
return 0;
}
int main() {
int1 n = 2, D = INT32_MAX, pk, pj;
while (Pentagonal(n) - Pentagonal(n - 1) < D) {
pk = Pentagonal(n);
cout << pk <<" "<< D << endl;
for (int1 j = n - 1; j >= 1; j--) {
pj = Pentagonal(j);
if (pk - pj >= D) break;
int1 ind1 = binary_search(Pentagonal, 2 * n, pk + pj);
int1 ind2 = binary_search(Pentagonal, n, pk -pj);
if(ind1 && ind2) D = pk - pj;
}
n += 1;
}
printf("%lld\n", D);
return 0;
}
045
/*************************************************************************
> File Name: 045.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月24日 星期二 19时54分53秒
************************************************************************/
#include<iostream>
using namespace std;
typedef long long int1;
int1 Triangle(int1 n) {
return n * (n + 1) / 2;
}
int1 Pentagonal(int1 n) {
return n * (3 * n - 1) / 2;
}
int1 Hexagonal(int1 n) {
return n * (2 * n - 1);
}
int1 binary_search(int1 (*num)(int1), int1 n, int1 x) {
int1 head = 1, tail = n -1, mid;
while(head <= tail) {
mid = (head + tail) >> 1;
if(num(mid) == x) return mid;
if(num(mid) < x) head = mid + 1;
else tail = mid -1;
}
return -1;
}
int main() {
int1 n = 144;
while (binary_search(Pentagonal, 2 * n, Hexagonal(n)) == -1) n += 1;
cout << Hexagonal(n) << endl;
return 0;
}
040
/*************************************************************************
> File Name: 040-m.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月24日 星期二 20时22分45秒
************************************************************************/
#include<iostream>
#include<cmath>
using namespace std;
#define max_n 1000000
int ans[max_n + 5] = {0, 0};
void add(int n) {
int c = floor(log10(n)) + 1;
while (c--){
ans[0]++;
int d = pow(10, c);
ans[ans[0]]= n / d;
n = n % d;
}
}
void print() {
for(int i = 1; i < 13; i++) {
cout << ans[i];
}
cout << endl;
}
int main() {
int i = 1;
while (ans[0] <= 1000000) {
add(i);
i++;
}
int sum = 1;
print();
for(int i = 0; i <= 6; i++) {
int g = pow(10, i);
cout << ans[g] << endl;
sum *= ans[g];
}
cout << sum << endl;
return 0;
}
http://oj.haizeix.com/problem/43
/*************************************************************************
> File Name: 43-1.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月28日 星期六 18时05分27秒
************************************************************************/
#include<iostream>
#include<algorithm>
using namespace std;
#define max_n 1005
typedef long long ll;
ll val[max_n][max_n] = {0};
ll keep[max_n][max_n] = {0};
int dfs(int i, int j, int n) {
if(keep[i][j]) return keep[i][j];
if(i + 1 == n) return keep[i][j];
int val1 = dfs(i + 1, j, n);
int val2 = dfs(i + 1, j + 1, n);
keep[i][j] = (max(val1, val2) + val[i][j]);
return keep[i][j];
}
void solve() {
int n;
cin >> n;
for(int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
cin >> val[i][j];
}
}
cout << dfs(0, 0, n + 1) << endl;
}
int main() {
solve();
return 0;
}
026
循环节个数
余数从1开始
乘10
求余
记录出现该余数的首次位置
如果出现过了,减
/*************************************************************************
> File Name: 026.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月28日 星期六 20时35分37秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 1000
int get_len(int d) {
int r_len[max_n + 5] = {0};
int r = 1, t =1;
r_len[r] = 1;
while (r) {
r *= 10;
r %= d;
t += 1;
if(r_len[r]) return t - r_len[r];
r_len[r] = t;
}
return 0;
}
int main() {
int d = 0, len = -1;
for (int i = 2; i < max_n; i++) {
int tmp = get_len(i);
if (len < tmp) {
len = tmp;
d = i;
}
}
cout << d << endl;
cout << len << endl;
return 0;
}
029
/*************************************************************************
> File Name: 029.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月29日 星期日 14时15分03秒
************************************************************************/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define max_n 10000
#define max_m 210
int result[max_n + 5][max_m] = {0};
int result_len = 0;
int find_result(int *num) {
for (int i = 0; i < result_len; i++) {
if (memcmp(result + i, num, sizeof(int) * max_m) == 0) {
return i + 1;
}
}
return 0;
}
int main() {
for (int a = 2; a <= 100; a++) {
for (int b = 2; b <= 100; b++) {
int tmp[max_m] = {1, 1, 0};
for (int i = 0; i < b; i++) {
for (int j = 1; j <= tmp[0]; j++) {
tmp[j] *= a;
}
for (int j = 1; j <= tmp[0]; j++) {
if(tmp[j] < 10) continue;
tmp[j + 1] += tmp[j] / 10;
tmp[j] %= 10;
tmp[0] += (j == tmp[0]);
}
}
if(find_result(tmp) == 0) {
memcpy(result + result_len, tmp, sizeof(int) * max_m);
result_len += 1;
}
}
}
cout << result_len << endl;
return 0;
}
/*************************************************************************
> File Name: 029.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月29日 星期日 14时15分03秒
************************************************************************/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define max_n 10000
#define max_m 210
int *result[max_n + 5] = {0};
int result_len = 0;
int find_result(int *num) {
for (int i = 0; i < result_len; i++) {
if (memcmp(result[i], num, sizeof(int) * max_m) == 0) {
return i + 1;
}
}
return 0;
}
int *calc(int a, int b) {
int *tmp = (int *)calloc(sizeof(int), max_m);
tmp[0] = 1, tmp[1] = 1;
for (int i = 0; i < b; i++) {
for (int j = 1; j <= tmp[0]; j++) tmp[j] *= a;
for (int j = 1; j <= tmp[0]; j++) {
if(tmp[j] < 10) continue;
tmp[j + 1] += tmp[j] / 10;
tmp[j] %= 10;
tmp[0] += (j == tmp[0]);
}
}
return tmp;
}
int main() {
for (int a = 2; a <= 100; a++) {
for (int b = 2; b <= 100; b++) {
int *tmp = calc(a, b);
if(find_result(tmp) == 0) {
result[result_len++] = tmp;
}
}
}
cout << result_len << endl;
return 0;
}
/*************************************************************************
> File Name: 042.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月29日 星期日 15时35分24秒
************************************************************************/
#include<iostream>
#include "words.txt"
using namespace std;
int triangle(int n) {
return n * (n + 1) / 2;
}
int binary_search(int (*func)(int), int l, int r, int x) {
if(l > r) return false;
int mid = (l + r) >> 1;
if(func(mid) == x) return true;
if(func(mid) < x) l = mid + 1;
else r = mid -1;
return binary_search(func, l, r, x);
}
int is_val(char *str) {
int sum = 0;
for(int i = 0; str[i]; i++) {
sum += (str[i] - 'A' + 1);
}
return binary_search(triangle, 1, sum, sum);
}
int main() {
int n = sizeof(str) / 100;
cout << n << endl;
int cnt = 0;
for (int i = 0; i < n; i++) {
if(is_val(str[i])) cnt += 1;
}
cout << cnt << endl;
return 0;
}
char str[100][] = { "A","ABILITY","ABLE","ABOUT","ABOVE","ABSENCE","ABSOLUTELY","ACADEMIC","ACCEPT","ACCESS","ACCIDENT","ACCOMPANY","ACCORDING","ACCOUNT","ACHIEVE","ACHIEVEMENT","ACID","ACQUIRE","ACROSS","ACT","ACTION","ACTIVE","ACTIVITY","ACTUAL","ACTUALLY","ADD","ADDITION","ADDITIONAL","ADDRESS","ADMINISTRATION","ADMIT","ADOPT","ADULT","ADVANCE","ADVANTAGE","ADVICE","ADVISE","AFFAIR","AFFECT","AFFORD","AFRAID","AFTER","AFTERNOON","AFTERWARDS","AGAIN","AGAINST","AGE","AGENCY","AGENT","AGO","AGREE","AGREEMENT","AHEAD","AID","AIM","AIR","AIRCRAFT","ALL","ALLOW","ALMOST","ALONE","ALONG","ALREADY","ALRIGHT","ALSO","ALTERNATIVE","ALTHOUGH","ALWAYS","AMONG","AMONGST","AMOUNT","AN","ANALYSIS","ANCIENT","AND","ANIMAL","ANNOUNCE","ANNUAL","ANOTHER","ANSWER","ANY","ANYBODY","ANYONE","ANYTHING","ANYWAY","APART","APPARENT","APPARENTLY","APPEAL","APPEAR","APPEARANCE","APPLICATION","APPLY","APPOINT","APPOINTMENT","APPROACH","APPROPRIATE","APPROVE","AREA","ARGUE","ARGUMENT","ARISE","ARM","ARMY","AROUND","ARRANGE","ARRANGEMENT","ARRIVE","ART","ARTICLE","ARTIST","AS","ASK","ASPECT","ASSEMBLY","ASSESS","ASSESSMENT","ASSET","ASSOCIATE","ASSOCIATION","ASSUME","ASSUMPTION","AT","ATMOSPHERE","ATTACH","ATTACK","ATTEMPT","ATTEND","ATTENTION","ATTITUDE","ATTRACT","ATTRACTIVE","AUDIENCE","AUTHOR","AUTHORITY","AVAILABLE","AVERAGE","AVOID","AWARD","AWARE","AWAY","AYE","BABY","BACK","BACKGROUND","BAD","BAG","BALANCE","BALL","BAND","BANK","BAR","BASE","BASIC","BASIS","BATTLE","BE","BEAR","BEAT","BEAUTIFUL","BECAUSE","BECOME","BED","BEDROOM","BEFORE","BEGIN","BEGINNING","BEHAVIOUR","BEHIND","BELIEF","BELIEVE","BELONG","BELOW","BENEATH","BENEFIT","BESIDE","BEST","BETTER","BETWEEN","BEYOND","BIG","BILL","BIND","BIRD","BIRTH","BIT","BLACK","BLOCK","BLOOD","BLOODY","BLOW","BLUE","BOARD","BOAT","BODY","BONE","BOOK","BORDER","BOTH","BOTTLE","BOTTOM","BOX","BOY","BRAIN","BRANCH","BREAK","BREATH","BRIDGE","BRIEF","BRIGHT","BRING","BROAD","BROTHER","BUDGET","BUILD","BUILDING","BURN","BUS","BUSINESS","BUSY","BUT","BUY","BY","CABINET","CALL","CAMPAIGN","CAN","CANDIDATE","CAPABLE","CAPACITY","CAPITAL","CAR","CARD","CARE","CAREER","CAREFUL","CAREFULLY","CARRY","CASE","CASH","CAT","CATCH","CATEGORY","CAUSE","CELL","CENTRAL","CENTRE","CENTURY","CERTAIN","CERTAINLY","CHAIN","CHAIR","CHAIRMAN","CHALLENGE","CHANCE","CHANGE","CHANNEL","CHAPTER","CHARACTER","CHARACTERISTIC","CHARGE","CHEAP","CHECK","CHEMICAL","CHIEF","CHILD","CHOICE","CHOOSE","CHURCH","CIRCLE","CIRCUMSTANCE","CITIZEN","CITY","CIVIL","CLAIM","CLASS","CLEAN","CLEAR","CLEARLY","CLIENT","CLIMB","CLOSE","CLOSELY","CLOTHES","CLUB","COAL","CODE","COFFEE","COLD","COLLEAGUE","COLLECT","COLLECTION","COLLEGE","COLOUR","COMBINATION","COMBINE","COME","COMMENT","COMMERCIAL","COMMISSION","COMMIT","COMMITMENT","COMMITTEE","COMMON","COMMUNICATION","COMMUNITY","COMPANY","COMPARE","COMPARISON","COMPETITION","COMPLETE","COMPLETELY","COMPLEX","COMPONENT","COMPUTER","CONCENTRATE","CONCENTRATION","CONCEPT","CONCERN","CONCERNED","CONCLUDE","CONCLUSION","CONDITION","CONDUCT","CONFERENCE","CONFIDENCE","CONFIRM","CONFLICT","CONGRESS","CONNECT","CONNECTION","CONSEQUENCE","CONSERVATIVE","CONSIDER","CONSIDERABLE","CONSIDERATION","CONSIST","CONSTANT","CONSTRUCTION","CONSUMER","CONTACT","CONTAIN","CONTENT","CONTEXT","CONTINUE","CONTRACT","CONTRAST","CONTRIBUTE","CONTRIBUTION","CONTROL","CONVENTION","CONVERSATION","COPY","CORNER","CORPORATE","CORRECT","COS","COST","COULD","COUNCIL","COUNT","COUNTRY","COUNTY","COUPLE","COURSE","COURT","COVER","CREATE","CREATION","CREDIT","CRIME","CRIMINAL","CRISIS","CRITERION","CRITICAL","CRITICISM","CROSS","CROWD","CRY","CULTURAL","CULTURE","CUP","CURRENT","CURRENTLY","CURRICULUM","CUSTOMER","CUT","DAMAGE","DANGER","DANGEROUS","DARK","DATA","DATE","DAUGHTER","DAY","DEAD","DEAL","DEATH","DEBATE","DEBT","DECADE","DECIDE","DECISION","DECLARE","DEEP","DEFENCE","DEFENDANT","DEFINE","DEFINITION","DEGREE","DELIVER","DEMAND","DEMOCRATIC","DEMONSTRATE","DENY","DEPARTMENT","DEPEND","DEPUTY","DERIVE","DESCRIBE","DESCRIPTION","DESIGN","DESIRE","DESK","DESPITE","DESTROY","DETAIL","DETAILED","DETERMINE","DEVELOP","DEVELOPMENT","DEVICE","DIE","DIFFERENCE","DIFFERENT","DIFFICULT","DIFFICULTY","DINNER","DIRECT","DIRECTION","DIRECTLY","DIRECTOR","DISAPPEAR","DISCIPLINE","DISCOVER","DISCUSS","DISCUSSION","DISEASE","DISPLAY","DISTANCE","DISTINCTION","DISTRIBUTION","DISTRICT","DIVIDE","DIVISION","DO","DOCTOR","DOCUMENT","DOG","DOMESTIC","DOOR","DOUBLE","DOUBT","DOWN","DRAW","DRAWING","DREAM","DRESS","DRINK","DRIVE","DRIVER","DROP","DRUG","DRY","DUE","DURING","DUTY","EACH","EAR","EARLY","EARN","EARTH","EASILY","EAST","EASY","EAT","ECONOMIC","ECONOMY","EDGE","EDITOR","EDUCATION","EDUCATIONAL","EFFECT","EFFECTIVE","EFFECTIVELY","EFFORT","EGG","EITHER","ELDERLY","ELECTION","ELEMENT","ELSE","ELSEWHERE","EMERGE","EMPHASIS","EMPLOY","EMPLOYEE","EMPLOYER","EMPLOYMENT","EMPTY","ENABLE","ENCOURAGE","END","ENEMY","ENERGY","ENGINE","ENGINEERING","ENJOY","ENOUGH","ENSURE","ENTER","ENTERPRISE","ENTIRE","ENTIRELY","ENTITLE","ENTRY","ENVIRONMENT","ENVIRONMENTAL","EQUAL","EQUALLY","EQUIPMENT","ERROR","ESCAPE","ESPECIALLY","ESSENTIAL","ESTABLISH","ESTABLISHMENT","ESTATE","ESTIMATE","EVEN","EVENING","EVENT","EVENTUALLY","EVER","EVERY","EVERYBODY","EVERYONE","EVERYTHING","EVIDENCE","EXACTLY","EXAMINATION","EXAMINE","EXAMPLE","EXCELLENT","EXCEPT","EXCHANGE","EXECUTIVE","EXERCISE","EXHIBITION","EXIST","EXISTENCE","EXISTING","EXPECT","EXPECTATION","EXPENDITURE","EXPENSE","EXPENSIVE","EXPERIENCE","EXPERIMENT","EXPERT","EXPLAIN","EXPLANATION","EXPLORE","EXPRESS","EXPRESSION","EXTEND","EXTENT","EXTERNAL","EXTRA","EXTREMELY","EYE","FACE","FACILITY","FACT","FACTOR","FACTORY","FAIL","FAILURE","FAIR","FAIRLY","FAITH","FALL","FAMILIAR","FAMILY","FAMOUS","FAR","FARM","FARMER","FASHION","FAST","FATHER","FAVOUR","FEAR","FEATURE","FEE","FEEL","FEELING","FEMALE","FEW","FIELD","FIGHT","FIGURE","FILE","FILL","FILM","FINAL","FINALLY","FINANCE","FINANCIAL","FIND","FINDING","FINE","FINGER","FINISH","FIRE","FIRM","FIRST","FISH","FIT","FIX","FLAT","FLIGHT","FLOOR","FLOW","FLOWER","FLY","FOCUS","FOLLOW","FOLLOWING","FOOD","FOOT","FOOTBALL","FOR","FORCE","FOREIGN","FOREST","FORGET","FORM","FORMAL","FORMER","FORWARD","FOUNDATION","FREE","FREEDOM","FREQUENTLY","FRESH","FRIEND","FROM","FRONT","FRUIT","FUEL","FULL","FULLY","FUNCTION","FUND","FUNNY","FURTHER","FUTURE","GAIN","GAME","GARDEN","GAS","GATE","GATHER","GENERAL","GENERALLY","GENERATE","GENERATION","GENTLEMAN","GET","GIRL","GIVE","GLASS","GO","GOAL","GOD","GOLD","GOOD","GOVERNMENT","GRANT","GREAT","GREEN","GREY","GROUND","GROUP","GROW","GROWING","GROWTH","GUEST","GUIDE","GUN","HAIR","HALF","HALL","HAND","HANDLE","HANG","HAPPEN","HAPPY","HARD","HARDLY","HATE","HAVE","HE","HEAD","HEALTH","HEAR","HEART","HEAT","HEAVY","HELL","HELP","HENCE","HER","HERE","HERSELF","HIDE","HIGH","HIGHLY","HILL","HIM","HIMSELF","HIS","HISTORICAL","HISTORY","HIT","HOLD","HOLE","HOLIDAY","HOME","HOPE","HORSE","HOSPITAL","HOT","HOTEL","HOUR","HOUSE","HOUSEHOLD","HOUSING","HOW","HOWEVER","HUGE","HUMAN","HURT","HUSBAND","I","IDEA","IDENTIFY","IF","IGNORE","ILLUSTRATE","IMAGE","IMAGINE","IMMEDIATE","IMMEDIATELY","IMPACT","IMPLICATION","IMPLY","IMPORTANCE","IMPORTANT","IMPOSE","IMPOSSIBLE","IMPRESSION","IMPROVE","IMPROVEMENT","IN","INCIDENT","INCLUDE","INCLUDING","INCOME","INCREASE","INCREASED","INCREASINGLY","INDEED","INDEPENDENT","INDEX","INDICATE","INDIVIDUAL","INDUSTRIAL","INDUSTRY","INFLUENCE","INFORM","INFORMATION","INITIAL","INITIATIVE","INJURY","INSIDE","INSIST","INSTANCE","INSTEAD","INSTITUTE","INSTITUTION","INSTRUCTION","INSTRUMENT","INSURANCE","INTEND","INTENTION","INTEREST","INTERESTED","INTERESTING","INTERNAL","INTERNATIONAL","INTERPRETATION","INTERVIEW","INTO","INTRODUCE","INTRODUCTION","INVESTIGATE","INVESTIGATION","INVESTMENT","INVITE","INVOLVE","IRON","IS","ISLAND","ISSUE","IT","ITEM","ITS","ITSELF","JOB","JOIN","JOINT","JOURNEY","JUDGE","JUMP","JUST","JUSTICE","KEEP","KEY","KID","KILL","KIND","KING","KITCHEN","KNEE","KNOW","KNOWLEDGE","LABOUR","LACK","LADY","LAND","LANGUAGE","LARGE","LARGELY","LAST","LATE","LATER","LATTER","LAUGH","LAUNCH","LAW","LAWYER","LAY","LEAD","LEADER","LEADERSHIP","LEADING","LEAF","LEAGUE","LEAN","LEARN","LEAST","LEAVE","LEFT","LEG","LEGAL","LEGISLATION","LENGTH","LESS","LET","LETTER","LEVEL","LIABILITY","LIBERAL","LIBRARY","LIE","LIFE","LIFT","LIGHT","LIKE","LIKELY","LIMIT","LIMITED","LINE","LINK","LIP","LIST","LISTEN","LITERATURE","LITTLE","LIVE","LIVING","LOAN","LOCAL","LOCATION","LONG","LOOK","LORD","LOSE","LOSS","LOT","LOVE","LOVELY","LOW","LUNCH","MACHINE","MAGAZINE","MAIN","MAINLY","MAINTAIN","MAJOR","MAJORITY","MAKE","MALE","MAN","MANAGE","MANAGEMENT","MANAGER","MANNER","MANY","MAP","MARK","MARKET","MARRIAGE","MARRIED","MARRY","MASS","MASTER","MATCH","MATERIAL","MATTER","MAY","MAYBE","ME","MEAL","MEAN","MEANING","MEANS","MEANWHILE","MEASURE","MECHANISM","MEDIA","MEDICAL","MEET","MEETING","MEMBER","MEMBERSHIP","MEMORY","MENTAL","MENTION","MERELY","MESSAGE","METAL","METHOD","MIDDLE","MIGHT","MILE","MILITARY","MILK","MIND","MINE","MINISTER","MINISTRY","MINUTE","MISS","MISTAKE","MODEL","MODERN","MODULE","MOMENT","MONEY","MONTH","MORE","MORNING","MOST","MOTHER","MOTION","MOTOR","MOUNTAIN","MOUTH","MOVE","MOVEMENT","MUCH","MURDER","MUSEUM","MUSIC","MUST","MY","MYSELF","NAME","NARROW","NATION","NATIONAL","NATURAL","NATURE","NEAR","NEARLY","NECESSARILY","NECESSARY","NECK","NEED","NEGOTIATION","NEIGHBOUR","NEITHER","NETWORK","NEVER","NEVERTHELESS","NEW","NEWS","NEWSPAPER","NEXT","NICE","NIGHT","NO","NOBODY","NOD","NOISE","NONE","NOR","NORMAL","NORMALLY","NORTH","NORTHERN","NOSE","NOT","NOTE","NOTHING","NOTICE","NOTION","NOW","NUCLEAR","NUMBER","NURSE","OBJECT","OBJECTIVE","OBSERVATION","OBSERVE","OBTAIN","OBVIOUS","OBVIOUSLY","OCCASION","OCCUR","ODD","OF","OFF","OFFENCE","OFFER","OFFICE","OFFICER","OFFICIAL","OFTEN","OIL","OKAY","OLD","ON","ONCE","ONE","ONLY","ONTO","OPEN","OPERATE","OPERATION","OPINION","OPPORTUNITY","OPPOSITION","OPTION","OR","ORDER","ORDINARY","ORGANISATION","ORGANISE","ORGANIZATION","ORIGIN","ORIGINAL","OTHER","OTHERWISE","OUGHT","OUR","OURSELVES","OUT","OUTCOME","OUTPUT","OUTSIDE","OVER","OVERALL","OWN","OWNER","PACKAGE","PAGE","PAIN","PAINT","PAINTING","PAIR","PANEL","PAPER","PARENT","PARK","PARLIAMENT","PART","PARTICULAR","PARTICULARLY","PARTLY","PARTNER","PARTY","PASS","PASSAGE","PAST","PATH","PATIENT","PATTERN","PAY","PAYMENT","PEACE","PENSION","PEOPLE","PER","PERCENT","PERFECT","PERFORM","PERFORMANCE","PERHAPS","PERIOD","PERMANENT","PERSON","PERSONAL","PERSUADE","PHASE","PHONE","PHOTOGRAPH","PHYSICAL","PICK","PICTURE","PIECE","PLACE","PLAN","PLANNING","PLANT","PLASTIC","PLATE","PLAY","PLAYER","PLEASE","PLEASURE","PLENTY","PLUS","POCKET","POINT","POLICE","POLICY","POLITICAL","POLITICS","POOL","POOR","POPULAR","POPULATION","POSITION","POSITIVE","POSSIBILITY","POSSIBLE","POSSIBLY","POST","POTENTIAL","POUND","POWER","POWERFUL","PRACTICAL","PRACTICE","PREFER","PREPARE","PRESENCE","PRESENT","PRESIDENT","PRESS","PRESSURE","PRETTY","PREVENT","PREVIOUS","PREVIOUSLY","PRICE","PRIMARY","PRIME","PRINCIPLE","PRIORITY","PRISON","PRISONER","PRIVATE","PROBABLY","PROBLEM","PROCEDURE","PROCESS","PRODUCE","PRODUCT","PRODUCTION","PROFESSIONAL","PROFIT","PROGRAM","PROGRAMME","PROGRESS","PROJECT","PROMISE","PROMOTE","PROPER","PROPERLY","PROPERTY","PROPORTION","PROPOSE","PROPOSAL","PROSPECT","PROTECT","PROTECTION","PROVE","PROVIDE","PROVIDED","PROVISION","PUB","PUBLIC","PUBLICATION","PUBLISH","PULL","PUPIL","PURPOSE","PUSH","PUT","QUALITY","QUARTER","QUESTION","QUICK","QUICKLY","QUIET","QUITE","RACE","RADIO","RAILWAY","RAIN","RAISE","RANGE","RAPIDLY","RARE","RATE","RATHER","REACH","REACTION","READ","READER","READING","READY","REAL","REALISE","REALITY","REALIZE","REALLY","REASON","REASONABLE","RECALL","RECEIVE","RECENT","RECENTLY","RECOGNISE","RECOGNITION","RECOGNIZE","RECOMMEND","RECORD","RECOVER","RED","REDUCE","REDUCTION","REFER","REFERENCE","REFLECT","REFORM","REFUSE","REGARD","REGION","REGIONAL","REGULAR","REGULATION","REJECT","RELATE","RELATION","RELATIONSHIP","RELATIVE","RELATIVELY","RELEASE","RELEVANT","RELIEF","RELIGION","RELIGIOUS","RELY","REMAIN","REMEMBER","REMIND","REMOVE","REPEAT","REPLACE","REPLY","REPORT","REPRESENT","REPRESENTATION","REPRESENTATIVE","REQUEST","REQUIRE","REQUIREMENT","RESEARCH","RESOURCE","RESPECT","RESPOND","RESPONSE","RESPONSIBILITY","RESPONSIBLE","REST","RESTAURANT","RESULT","RETAIN","RETURN","REVEAL","REVENUE","REVIEW","REVOLUTION","RICH","RIDE","RIGHT","RING","RISE","RISK","RIVER","ROAD","ROCK","ROLE","ROLL","ROOF","ROOM","ROUND","ROUTE","ROW","ROYAL","RULE","RUN","RURAL","SAFE","SAFETY","SALE","SAME","SAMPLE","SATISFY","SAVE","SAY","SCALE","SCENE","SCHEME","SCHOOL","SCIENCE","SCIENTIFIC","SCIENTIST","SCORE","SCREEN","SEA","SEARCH","SEASON","SEAT","SECOND","SECONDARY","SECRETARY","SECTION","SECTOR","SECURE","SECURITY","SEE","SEEK","SEEM","SELECT","SELECTION","SELL","SEND","SENIOR","SENSE","SENTENCE","SEPARATE","SEQUENCE","SERIES","SERIOUS","SERIOUSLY","SERVANT","SERVE","SERVICE","SESSION","SET","SETTLE","SETTLEMENT","SEVERAL","SEVERE","SEX","SEXUAL","SHAKE","SHALL","SHAPE","SHARE","SHE","SHEET","SHIP","SHOE","SHOOT","SHOP","SHORT","SHOT","SHOULD","SHOULDER","SHOUT","SHOW","SHUT","SIDE","SIGHT","SIGN","SIGNAL","SIGNIFICANCE","SIGNIFICANT","SILENCE","SIMILAR","SIMPLE","SIMPLY","SINCE","SING","SINGLE","SIR","SISTER","SIT","SITE","SITUATION","SIZE","SKILL","SKIN","SKY","SLEEP","SLIGHTLY","SLIP","SLOW","SLOWLY","SMALL","SMILE","SO","SOCIAL","SOCIETY","SOFT","SOFTWARE","SOIL","SOLDIER","SOLICITOR","SOLUTION","SOME","SOMEBODY","SOMEONE","SOMETHING","SOMETIMES","SOMEWHAT","SOMEWHERE","SON","SONG","SOON","SORRY","SORT","SOUND","SOURCE","SOUTH","SOUTHERN","SPACE","SPEAK","SPEAKER","SPECIAL","SPECIES","SPECIFIC","SPEECH","SPEED","SPEND","SPIRIT","SPORT","SPOT","SPREAD","SPRING","STAFF","STAGE","STAND","STANDARD","STAR","START","STATE","STATEMENT","STATION","STATUS","STAY","STEAL","STEP","STICK","STILL","STOCK","STONE","STOP","STORE","STORY","STRAIGHT","STRANGE","STRATEGY","STREET","STRENGTH","STRIKE","STRONG","STRONGLY","STRUCTURE","STUDENT","STUDIO","STUDY","STUFF","STYLE","SUBJECT","SUBSTANTIAL","SUCCEED","SUCCESS","SUCCESSFUL","SUCH","SUDDENLY","SUFFER","SUFFICIENT","SUGGEST","SUGGESTION","SUITABLE","SUM","SUMMER","SUN","SUPPLY","SUPPORT","SUPPOSE","SURE","SURELY","SURFACE","SURPRISE","SURROUND","SURVEY","SURVIVE","SWITCH","SYSTEM","TABLE","TAKE","TALK","TALL","TAPE","TARGET","TASK","TAX","TEA","TEACH","TEACHER","TEACHING","TEAM","TEAR","TECHNICAL","TECHNIQUE","TECHNOLOGY","TELEPHONE","TELEVISION","TELL","TEMPERATURE","TEND","TERM","TERMS","TERRIBLE","TEST","TEXT","THAN","THANK","THANKS","THAT","THE","THEATRE","THEIR","THEM","THEME","THEMSELVES","THEN","THEORY","THERE","THEREFORE","THESE","THEY","THIN","THING","THINK","THIS","THOSE","THOUGH","THOUGHT","THREAT","THREATEN","THROUGH","THROUGHOUT","THROW","THUS","TICKET","TIME","TINY","TITLE","TO","TODAY","TOGETHER","TOMORROW","TONE","TONIGHT","TOO","TOOL","TOOTH","TOP","TOTAL","TOTALLY","TOUCH","TOUR","TOWARDS","TOWN","TRACK","TRADE","TRADITION","TRADITIONAL","TRAFFIC","TRAIN","TRAINING","TRANSFER","TRANSPORT","TRAVEL","TREAT","TREATMENT","TREATY","TREE","TREND","TRIAL","TRIP","TROOP","TROUBLE","TRUE","TRUST","TRUTH","TRY","TURN","TWICE","TYPE","TYPICAL","UNABLE","UNDER","UNDERSTAND","UNDERSTANDING","UNDERTAKE","UNEMPLOYMENT","UNFORTUNATELY","UNION","UNIT","UNITED","UNIVERSITY","UNLESS","UNLIKELY","UNTIL","UP","UPON","UPPER","URBAN","US","USE","USED","USEFUL","USER","USUAL","USUALLY","VALUE","VARIATION","VARIETY","VARIOUS","VARY","VAST","VEHICLE","VERSION","VERY","VIA","VICTIM","VICTORY","VIDEO","VIEW","VILLAGE","VIOLENCE","VISION","VISIT","VISITOR","VITAL","VOICE","VOLUME","VOTE","WAGE","WAIT","WALK","WALL","WANT","WAR","WARM","WARN","WASH","WATCH","WATER","WAVE","WAY","WE","WEAK","WEAPON","WEAR","WEATHER","WEEK","WEEKEND","WEIGHT","WELCOME","WELFARE","WELL","WEST","WESTERN","WHAT","WHATEVER","WHEN","WHERE","WHEREAS","WHETHER","WHICH","WHILE","WHILST","WHITE","WHO","WHOLE","WHOM","WHOSE","WHY","WIDE","WIDELY","WIFE","WILD","WILL","WIN","WIND","WINDOW","WINE","WING","WINNER","WINTER","WISH","WITH","WITHDRAW","WITHIN","WITHOUT","WOMAN","WONDER","WONDERFUL","WOOD","WORD","WORK","WORKER","WORKING","WORKS","WORLD","WORRY","WORTH","WOULD","WRITE","WRITER","WRITING","WRONG","YARD","YEAH","YEAR","YES","YESTERDAY","YET","YOU","YOUNG","YOUR","YOURSELF","YOUTH"};
/*************************************************************************
> File Name: 042-m.cpp
> Author: ma6174
> Mail: ma6174@163.com
> Created Time: Tue 24 Dec 2019 14:43:55 CST
************************************************************************/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define max_n 1000000
int sjx[max_n + 5] = {0};
void init() {
int t = 1;
for(int i = 1; i * (i + 1) / 2 <= max_n; i++) {
t = i * (i + 1) / 2;
sjx[t] = 1;
}
}
int svalue(string s) {
int ret = 0;
for(int i = 0; i < s.size(); i++) {
ret += (int)(s[i] - 'A' + 1);
}
return ret;
}
int is_val(string s) {
if(sjx[svalue(s)]) return 1;
return 0;
}
void solve() {
init();
int cnt = 0;
string tmp = "";
int i = 0;
int ans = 0;
char x;
while(x = getchar()) {
if(x == ',') continue;
else if(x == '"') {
cnt++;
if(cnt == 2) {
if(is_val(tmp)) ans++;
tmp = "";
cnt = 0;
cout << ans << endl;
}
}
else{
tmp = tmp + x;
}
}
cout << ans << endl;
}
int main() {
solve();
return 0;
}
046
http://pe-cn.github.io/46/
https://projecteuler.net/problem=46
哥德巴赫的另一个猜想
克里斯蒂安·哥德巴赫曾经猜想,每个奇合数可以写成一个素数和一个平方的两倍之和。
9 = 7 + 2×12
15 = 7 + 2×22
21 = 3 + 2×32
25 = 7 + 2×32
27 = 19 + 2×22
33 = 31 + 2×12
最终这个猜想被推翻了。
最小的不能写成一个素数和一个平方的两倍之和的奇合数是多少?
/*************************************************************************
> File Name: 046.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月29日 星期日 16时09分34秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 10000000
int prime[max_n + 5] = {0};
int is_prime[max_n + 5] = {0};
void init() {
for (int i = 2; i <= max_n; i++) {
if(!is_prime[i]) prime[++prime[0]] = i;
for (int j = 1; j <= prime[0]; j++) {
if(prime[j] * i > max_n) break;
is_prime[prime[j] * i] = 1;
if(i % prime[j] == 0) break;
}
}
return ;
}
int is_sqrt(int n) {
return 2 * n * n;
}
bool binary_search(int (*func)(int), int l, int r,int x) {
if (l > r) return false;
int mid = (l + r) >> 1;
if (func(mid) == x) return true;
if (func(mid) < x) l = mid + 1;
else r = mid - 1;
return binary_search(func, l, r, x);
}
int main() {
init();
int ans = 0;
for (int i = 9; i <= max_n; i += 2) {
if (!is_prime[i]) continue;
int flag = 0;
for (int j = 1; j <= prime[0] && prime[j] < i; j++) {
if (binary_search(is_sqrt, 1, i - prime[j], i - prime[j])) {
flag = 1;
break;
}
}
if (flag) continue;
ans = i;
break;
}
cout << ans << endl;
return 0;
}
/*************************************************************************
> File Name: 046.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月29日 星期日 16时09分34秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 10000000
int prime[max_n + 5] = {0};
int is_prime[max_n + 5] = {0};
void init() {
for (int i = 2; i <= max_n; i++) {
if(!is_prime[i]) prime[++prime[0]] = i;
for (int j = 1; j <= prime[0]; j++) {
if(prime[j] * i > max_n) break;
is_prime[prime[j] * i] = 1;
if(i % prime[j] == 0) break;
}
}
return ;
}
int is_sqrt(int n) {
return 2 * n * n;
}
bool binary_search(int (*func)(int), int l, int r,int x) {
if (l > r) return false;
int mid = (l + r) >> 1;
if (func(mid) == x) return true;
if (func(mid) < x) l = mid + 1;
else r = mid - 1;
return binary_search(func, l, r, x);
}
bool check(int n) {
for (int j = 1; j <= prime[0] && prime[j] < n; j++) {
if (binary_search(is_sqrt, 1, n - prime[j], n - prime[j])) return true;
}
return false;
}
int main() {
init();
int ans = 0;
for (int i = 9; i <= max_n; i += 2) {
if (!is_prime[i]) continue;
if(check(i)) continue;
ans = i;
break;
}
cout << ans << endl;
return 0;
}
mixun
047
http://pe-cn.github.io/47/
/*************************************************************************
> File Name: 047.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月29日 星期日 18时08分54秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 1000000
int prime[max_n + 5] = {0};
void init() {
for (int i = 2; i <= max_n ;i++) {
if (prime[i]) continue;
for (int j = i; j <= max_n; j += i) {
prime[j] += 1;
}
}
return ;
}
int solve(int n) {
int ans = 0;
for (int i = 2; i <= max_n; i++) {
int flag = 1;
for (int j = 0; j < n && flag; j++) {
flag = (prime[i + j] == n);
}
if(flag) return i;
}
return -1;
}
int main() {
init();
int n;
cin >> n;
cout << solve(n) << endl;
return 0;
}
021
/*************************************************************************
> File Name: 021.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月29日 星期日 18时42分20秒
************************************************************************/
#include<iostream>
using namespace std;
#define max_n 4000000
int f[max_n + 5] = {0};
void init() {
for (int i = 1; i <= max_n; i++) {
for (int j = 2; i * j<= max_n; j++) {
f[i * j] += i;
}
}
return ;
}
int main() {
init();
long long sum = 0;
for (int i = 2; i < max_n; i++) {
if(f[i] != i && f[i] < max_n && i == f[f[i]]) sum += i;
}
cout << sum << endl;
return 0;
}
/*************************************************************************
> File Name: 021-1.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月29日 星期日 19时14分44秒
************************************************************************/
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
#define max_n 4000000
int prime[max_n + 5] = {0};
int f[max_n + 5] = {0};
int cnt[max_n + 5] = {0};
void init() {
for (int i = 2; i <= max_n; i++) {
if (!prime[i]) {
prime[++prime[0]] = i;
f[i] = i + 1;
cnt[i] = 1;
}
for (int j = 1; j <= prime[0]; j++) {
if(prime[j] * i > max_n) break;
prime[prime[j] * i] = 1;
if (i % prime[j] == 0) {
f[i * prime[j]] = f[i] /(pow(prime[j], cnt[i] + 1) - 1)
* (pow(prime[j], cnt[i] + 2) - 1);
cnt[i * prime[j]] = cnt[i] + 1;
break;
}
else {
f[i * prime[j]] = f[i] * f[prime[j]];
cnt[i * prime[j]] = 1;
}
}
}
return ;
}
int main() {
init();
ll sum = 0;
for (int i = 2; i < max_n; i++) {
f[i] -= i;
}
for (int i = 2; i < max_n; i++) {
if(f[i] != i && f[i] < max_n && i == f[f[i]]) {
sum += i;
}
}
cout << sum << endl;
return 0;
}
/*************************************************************************
> File Name: 021-1.cpp
> Author: lbh
> Mail: 2052658718@qq.com
> Created Time: 2019年12月29日 星期日 19时14分44秒
************************************************************************/
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
#define max_n 4000000
int prime[max_n + 5] = {0};
ll f[max_n + 5] = {0};
ll cnt[max_n + 5] = {0};
void init() {
for (int i = 2; i <= max_n; i++) {
if (!prime[i]) {
prime[++prime[0]] = i;
f[i] = i + 1;
cnt[i] = i * i;
}
for (int j = 1; j <= prime[0]; j++) {
if(prime[j] * i > max_n) break;
prime[prime[j] * i] = 1;
if (i % prime[j] == 0) {
f[i * prime[j]] = f[i] * (cnt[i] * prime[j] - 1) / (cnt[i] - 1);
cnt[i * prime[j]] = cnt[i] * prime[j];
break;
}
else {
f[i * prime[j]] = f[i] * f[prime[j]];
cnt[i * prime[j]] = prime[j] * prime[j];
}
}
}
return ;
}
int main() {
init();
ll sum = 0;
for (int i = 2; i < max_n; i++) {
f[i] -= i;
}
for (int i = 2; i < max_n; i++) {
if(f[i] != i && f[i] < max_n && i == f[f[i]]) {
sum += i;
}
}
cout << sum << endl;
return 0;
}
1
https://github.com/libohao666/bmnlts.git
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/libohao666/bmnlts.git
git push -u origin master
git remote add origin https://github.com/libohao666/bmnlts.git
git push -u origin master
#报错执行下面
git add .
git commit -m "your description"
git push origin master
#########################################################################
# File Name: gitup.sh
# Author: lbh
# mail: 2052658718@qq.com
# Created Time: 2019年12月28日 星期六 15时49分00秒
#########################################################################
#!/bin/bash
git add *
git commit -m $(date "+%Y%m%d")
git push origin master
#########################################################################
# File Name: gitup.sh
# Author: lbh
# mail: 2052658718@qq.com
# Created Time: 2019年12月28日 星期六 18时27分41秒
#########################################################################
#!/bin/bash
git add *.cpp
git commit -m $(date "+%Y%m%d")
git push origin master