結果
| 問題 | 
                            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;
	}
}