結果
問題 | No.1358 [Zelkova 2nd Tune *] 語るなら枚数を... |
ユーザー |
![]() |
提出日時 | 2021-01-23 01:31:19 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 501 ms / 2,000 ms |
コード長 | 1,989 bytes |
コンパイル時間 | 1,165 ms |
コンパイル使用メモリ | 97,312 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-29 08:10:52 |
合計ジャッジ時間 | 4,276 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 17 |
コンパイルメッセージ
main.cpp: In function 'void solve()': main.cpp:76:16: warning: 'q' may be used uninitialized [-Wmaybe-uninitialized] 76 | g=f*p,h=f*q; | ~^~~~ main.cpp:54:10: note: 'q' was declared here 54 | LL p,q; | ^ main.cpp:76:10: warning: 'p' may be used uninitialized [-Wmaybe-uninitialized] 76 | g=f*p,h=f*q; | ~^~~~ main.cpp:54:8: note: 'p' was declared here 54 | LL p,q; | ^
ソースコード
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<vector>#include<cmath>#include<algorithm>#include<map>#include<queue>#include<deque>#include<iomanip>#include<tuple>#include<cassert>#include<set>#include<complex>#include<numeric>#include<functional>using namespace std;typedef long long int LL;typedef pair<int,int> P;typedef pair<LL,int> LP;const int INF=1<<30;const LL MAX=1e9+7;void array_show(int *array,int array_n,char middle=' '){for(int i=0;i<array_n;i++)printf("%d%c",array[i],(i!=array_n-1?middle:'\n'));}void array_show(LL *array,int array_n,char middle=' '){for(int i=0;i<array_n;i++)printf("%lld%c",array[i],(i!=array_n-1?middle:'\n'));}void array_show(vector<int> &vec_s,int vec_n=-1,char middle=' '){if(vec_n==-1)vec_n=vec_s.size();for(int i=0;i<vec_n;i++)printf("%d%c",vec_s[i],(i!=vec_n-1?middle:'\n'));}void array_show(vector<LL> &vec_s,int vec_n=-1,char middle=' '){if(vec_n==-1)vec_n=vec_s.size();for(int i=0;i<vec_n;i++)printf("%lld%c",vec_s[i],(i!=vec_n-1?middle:'\n'));}void init(){}long long int gcd(long long int a,long long int b){if(a<b)swap(a,b);if(b==0)return a;return gcd(b,a%b);}void solve(){int n,m;LL i,j,k;LL a,b,c;LL p,q;LL x,y,z,w;LL f,g,h;LL s=0;cin>>x>>y>>z>>w;if(w/y<=1e6)swap(x,y);if(w/z<=1e6)swap(x,z);a=y/gcd(y,z),b=z/gcd(y,z),c=gcd(y,z);if(b==1){p=1,q=1-a;}else{for(i=0;i<=1e6;i++){if(i*a%b==1){p=i,q=-i*a/b;break;}}}for(i=0;i<=1e6 && i*x<=w;i++){f=w-i*x;if(f%c)continue;f/=c;g=f*p,h=f*q;if(h){j=(-h-1)/a+1;h+=a*j,g-=b*j;}if(g>=0)s+=g/b+1;s%=MAX;}cout<<s<<endl;}int main(){int n,i;init();cin>>n;for(i=0;i<n;i++){solve();}}