結果
| 問題 | No.8036 Restricted Lucas (Easy) |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-03-09 07:22:07 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 973 bytes |
| コンパイル時間 | 565 ms |
| コンパイル使用メモリ | 64,740 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-07 20:45:53 |
| 合計ジャッジ時間 | 1,237 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 1 |
| other | WA * 6 |
コンパイルメッセージ
main.cpp:32:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
32 | main()
| ^~~~
ソースコード
#include<iostream>
using namespace std;
enum{zero,one,two};
long mod=(((((((((((((((one)*two+one)*two+one)*two*two+one)*two+one)*two+one)*two*two*two+one)*two+one)*two*two+one)*two*two+one)*two+one)*two*two*two+one)*two*two+one)*two*two*two*two*two*two*two+one)*two+one)*two+one;
int T,N;
long add(long a,long b){a+=b;if(a>=mod)a-=mod;return a;}
long m(long a,long b)
{
long ans{};
while(b)
{
if(b&one)
{
ans=add(ans,a);
}
b>>=one;
a=add(a,a);
}
return ans;
}
void Mmul(long&a,long&b,long&c,long&d,long A,long B,long C,long D)
{
long x=add(m(a,A),m(b,C));
long y=add(m(a,B),m(b,D));
long z=add(m(c,A),m(d,C));
long w=add(m(c,B),m(d,D));
a=x;
b=y;
c=z;
d=w;
}
main()
{
cin>>T;
for(;T--;)
{
cin>>N;
long aa{one},ab{one},ac{one},ad{},ea{one},eb{},ec{},ed{one};
while(N)
{
if(N&one)
{
Mmul(ea,eb,ec,ed,aa,ab,ac,ad);
}
N>>=one;
Mmul(aa,ab,ac,ad,aa,ab,ac,ad);
}
long ans=add(add(ea,ea),mod-eb);
cout<<ans<<endl;
}
}