project euler

project euler 031~035

31.イギリスの硬貨のはなし。 1p,2p,5p,10p,20p,50p,100p,200pありますので200pが何通り作れるかを求める。愚直 int maney[] = {1,2,5,10,20,50,100,200}; int main(void){ int cnt=0; for(int i=0;i<200;i++) for(int j=0;j<100;j++) for(int k=0;k<40;k++)…

project euler 26~30

26. 少数の循環小数で最長の長さを持つ値を出す あまりと商が同じときにreturn で返すようにしました また桁数に応じて10^x 倍しています int kai(int a,int b){ int now = 1,amari = 0,cnt=0; if(b == 1) now *=10; if(b == 2) now *=100; if(b == 3) now *…

project euler 21~25

21. d(n)をnの真の約数の和と定義する。(真の約数とはn以外の約数のことである。) もし、d(a) = b かつ d(b) = a (a ≠ b)を満たすとき、aとbは友愛数(親和数)であるという。 それでは10000未満の友愛数の合計を求めよ。 #define smax 10000 int a[smax…

project euler 16~20

16. 2^1000の値をすべて足すといくつになるか ex. 2^4 = 16 -> 1+6 = 7 boostに頼りました。bigIntegerと文字列処理 #include<boost/multiprecision/cpp_int.hpp> #include<boost/lexical_cast.hpp> using namespace boost::multiprecision; using namespace boost; int main(void){ mp_uint1024_t a = 2; rep(i,999) a </boost/lexical_cast.hpp></boost/multiprecision/cpp_int.hpp>…

project euler 6~10

6.1から100の和を2乗したものと1から100までの値各々を2乗した値をすべて足した値との差を出す int main(void){ int a=0,b=0; for(int i=1;i<101;i++){ a += i*i; b += i; } cout << b*b-a<<endl; return 0; } 7.素数の10001番目を出す。エラトステネスの篩を使いました #define smax 400000 int a[smax]; vector<int> num; void furui(){ fill(a,a+smax,1); a[0] = a[1] = 0; REP(i,2,</endl;>…

project euler 1~5

1. 3の倍数と5の倍数をたす(1000未満) int main(void){ int sum(0); REP(i,1,1000) if(i % 3 == 0 || i % 5 == 0) sum+=i; cout << sum << endl; return 0; } 2. フィボナッチ数列で偶数の値のものをたす(4000000以下まで) #define smax 10000000 int dp[sma…

project euler 11~15

11. 縦横斜め4つの数字の積の最大を出力する 実質、下、右、斜め下右、左だけでいいです。 #define smax 20 int table[smax][smax]; int main(void){ rep(i,smax) rep(j,smax) cin >> table[i][j]; int res=-1; rep(i,smax){ int a[4]={}; rep(j,smax){ if(j…