「オイラープロジェクト91~100」の編集履歴(バックアップ)一覧に戻る
#include<stdio.h> #include<algorithm> int main(){ int a[3]; int size=50,ans=0; for(int x1=0;x1<=size;x1++){ for(int y1=0;y1<=size;y1++){ if(x1==0&&y1==0)continue; for(int x2=0;x2<=size;x2++){ for(int y2=0;y2<=size;y2++){ if((x2==0&&y2==0)||(x2==x1&&y2==y1))continue; a[0]=(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1); a[1]=x1*x1+y1*y1; a[2]=x2*x2+y2*y2; std::sort(a,a+3); if(a[0]+a[1]==a[2]){ ans++; } } } } } printf("%d",ans/2); }
#include<stdio.h> int memo[1000]={0}; int saiki(int n){ if(n==1||n==89){ return n; } if(n<1000&&memo[n]!=0)return memo[n]; int next=0,m=n; while(m!=0){ next+=(m%10)*(m%10); m/=10; } m=saiki(next); if(n<1000)memo[n]=m; return m; } int main(){ int ans=0; for(int i=1;i<10000000;i++){ ans+=(saiki(i)==89); } printf("%d",ans); }
#include<stdio.h> #include<math.h> #include<iostream> const int up=1000000; int memo[up+2]={0}; __int64 wa(int n){ __int64 up=sqrt(n),c1,t,re=1,s=n; for(int i=2;i<=up;i++){ c1=1; t=1; while(n%i==0){ n/=i; t*=i; c1+=t; } re*=c1; } if(n!=1){ re*=(n+1); } return re-s; } int saiki(__int64 n,int s,int deep){ if(n>=up)return 0;//100万を超えてしまった if(s==n&&deep>0)return deep;//輪になった if(memo[(int)n]!=0)return 0;//他の輪に外から入ってしまった memo[(int)n]=1;//とりあえず使用済みにしておく int re=saiki(wa(n),s,deep+1); memo[(int)n]=re;//正式にループの長さが決まった return re; } int main(){ for(int i=2;i<up;i++){ if(memo[i]==0){ saiki(i,i,0); } } int ans,loopSize=0; for(int i=0;i<up;i++){ if(memo[i]>loopSize){ ans=i; loopSize=memo[i]; } } printf("%d %d\n",ans,loopSize); }
(defvar mask 10000000000) mask (setq mask 10000000000) 10000000000 (defun saiki (n m all) (if (< 0 m) (if (= (mod m 2) 1) (saiki (mod (* n n) mask) (floor (/ m 2)) (mod (* all n) mask)) (saiki (mod (* n n) mask) (floor (/ m 2)) all)) all)) saiki (mod (+ (* (saiki 2 7830457 1) 28433) 1) mask)
#include<stdio.h> #include<math.h> int main(){ double a,b,c,myMax=0; int ansNo; for(int i=0;i<1000;i++){ scanf("%lf,%lf",&a,&b); c=log(a)*b; printf("( %lf %lf)\n",log(a),b); if(c>myMax){ myMax=c; ansNo=i+1; } } printf("%d\n",ansNo); }
#include<stdio.h> #include<math.h> #include<iostream> #include <iomanip> int main(){ double a=15,n=21,n2,a2,c; std::cout.precision(4); std::cout.setf(std::ios::fixed); while(n<1000000000000.0){ c=a+n-1; n2=(1+4*c+sqrt(8*c*c+1))/2.0; a=n2-c; n=n2; std::cout<<a<<"/"<<n<<"\n"; } }