「プロジェクトオイラー問い101~110」の編集履歴(バックアップ)一覧に戻る
#include<stdio.h> int main(){ int xs[3],ys[3]; char c1,c2; int ans=0; for(int i=0;i<1000;i++){ for(int i=0;i<3;i++)scanf("%d%c%d%c",&xs[i],&c1,&ys[i],&c2); int p=0,m=0; for(int i=0;i<3;i++)xs[i]*ys[(i+1)%3]-ys[i]*xs[(i+1)%3]>=0?p++:m++; if(p==3||m==3)ans++; } printf("%d",ans); }
#include<stdio.h> #include<stdlib.h> #include<iostream> __int64 maskDown=1,maskUp=1; int check(__int64 num){ char str[11]; while(num>=maskDown)num/=10; sprintf(str,"%d",num); int count[10]={1,0,0,0,0,0,0,0,0,0}; for(int i=0;i<9;i++){ count[str[i]-'0']++; if(count[str[i]-'0']>1)return false; } return true; } int main(){ __int64 upF1=1,upF2=1,downF1=1,downF2=1,upF3,downF3; for(int i=0;i<9;i++)maskDown*=10; for(int i=0;i<17;i++)maskUp*=10; int ans=2; printf(""); while(check(upF2)==false||check(downF2)==false){ upF3=upF1+upF2; upF1=upF2; upF2=upF3; downF3=downF1+downF2; downF1=downF2; downF2=downF3; while(maskUp<upF2&&maskUp<upF1){ upF2/=10; upF1/=10; } downF2%=maskDown; ans++; } std::cout<<upF2; printf(" %d",ans); }