bnnmts

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
Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值