NYOJ-102-二乗型を求める 2528 ワード ACM ニャンコ 102 じゅんほうしきかながた時間制限:1000 ms|メモリ制限:65535 KB 難易度:3 説明aのb次の方がcに対して余分な値を取ることを求めます 入力1行目に入力される整数nは、テストデータのグループ数を表す(n<100)各グループのテストは1行のみで、そのうち3つの正の整数a,b,c(1=しゅつりょくaのb次方対cの剰余を出力した後の結果サンプル入力3 2 3 5 3 100 10 11 12345 12345 サンプル出力3 1 10481 タイトルリンク:http://acm.nyist.net/JudgeOnline/problem.php?pid=102 参照先:Long Long、__int 64使用概要前言:16ビット環境ではint/unsigned intが16ビット、long/unsigned longが32ビット、intが32ビット、unsigned intが16ビット、long/unsigned longが32ビットを占めるときに使用する必要がある:longとintの範囲は[-2^31,2^31)、すなわち-2174483648~2174748647であり、unsignedの範囲は[0,2^32],すなわち0~4294967295であるため、従来の32ビット整数は40億程度しか処理できず、40億よりも多くの数に遭遇すると64ビットが使用される.64ビット使用範囲:64ビット整数に対するコンパイラの拡張が異なる.VCでは__int64/unsigned__int64が使用され、範囲は[-2^63,2^63)および[0,2^64],すなわち−922337203685475808~922337203685475807と0~18446744073709551615(約1800億円). 注意点:1、コンパイラによって64ビットの申明方式が異なる.2、long long/unsigned long longは一般的にLinuxの下で説明する方式で、例えば:G++3、_int64/unsigned __int 64は一般的にWindowsの下で64ビットを使用する申明方式であり、例えばVS 4は、付与時にllを加えて明示的に付与することに注意する必要がある.5、64ビットと32ビットの混合演算を行うと、32ビットの整数は暗黙的に64ビットの整数に変換される.6、printf("");long longは%lld出力を使用し、_int 64は%I 64 d、符号なしでdの代わりにuを使用すればよい.7、テストの下でコンパイラは普通2種類の操作をサポートして、あまり葛藤する必要はありません.華麗な区切り線===================================================================================h> #include intmain(){unsigned long longa=412432424000 ll;unsigned__int64 b=922337203685475808 ll;printf("%I 64 u",a);//%lld使用時に正常に出力できず、why?解答はprintf("%I 64 u",b);system("pause");return 0;}実験したばかりで、VC 6、DEV、CodeBlocksの中でC言語はすべて使うことができますint 64は、フォーマット出力識別子が%I 64 dである.ただし、VC 6では数字の後にLを2つ追加するとエラーが発生し、1つだけ追加するか、追加しないことができます.資料を調べたら、_int 64はwindows専用でvc、gccなどのコンパイラでサポートされていますが、UNIX、Linuxではlong longで%lldを合わせる必要があります.後者は標準Cの規定です!long long配合%I 64 dを試してみましたが、long longでも__でも正しく出力できます.int 64配合%lldは正しく出力できません.だから私はwindowsの下でlonglongあるいは,_を使う必要があると結論しました.int 64配合%64 d.一方,UNIX,Linuxでは標準Cで規定されたlong long配合%lldを用いなければならない.記.元のアドレス:http://hi.baidu.com/xezchifbktckptr/item/d97b0edbda6678e5b3f777a9 回答:#include int main() { int n; scanf("%d",&n); while(n--) { int b,c; long long a,s=1; scanf("%lld%d%d",&a,&b,&c); while(b>0) { if(b%2==1) s=s*a%c; a=a*a%c; b/=2; } printf("%lld",s); } return 0; } Educational Codeforces Round 92(Rated for Div.2)A,B,C題解 SQL Serverは、オブジェクトが存在するかどうかを判断します(整理中...)