結果
問題 | No.1398 調和の魔法陣 (構築) |
ユーザー |
|
提出日時 | 2021-02-19 23:48:19 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 3,406 bytes |
コンパイル時間 | 2,364 ms |
コンパイル使用メモリ | 197,380 KB |
最終ジャッジ日時 | 2025-01-19 01:55:44 |
ジャッジサーバーID (参考情報) |
judge5 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 22 WA * 6 |
ソースコード
#include <bits/stdc++.h> using namespace std; typedef long long int ll; typedef unsigned long long ull; constexpr ll mod=1e9+7; ll mod_pow(ll x,ll n){ x%=mod; ll res=1; while(n>0){ if(n&1LL)res=res*x%mod; x=x*x%mod; n>>=1LL; } return res; } void solve(int h,int w,int k){ if(k==0){ for(int i=0;i<h;i++){ for(int j=0;j<w;j++){ printf("0"); } printf("\n"); } return; } if(h==1){ if(w==1){ if(k<=9) printf("%d\n",k); else printf("-1\n"); return; } if(k<=18 and w%3==2){ for(int i=0;i<w;i++){ if(i%3==0)printf("%d",min(k,9)); else if(i%3==1)printf("%d",k-min(k,9)); else printf("0"); } printf("\n"); return; } printf("-1\n"); return; } if(w==1){ if(k<=18 and h%3==2){ for(int i=0;i<h;i++){ if(i%3==0)printf("%d\n",min(k,9)); else if(i%3==1)printf("%d\n",k-min(k,9)); else printf("0\n"); } return; } return; } if(h==2 and w==2){ if(k<=36){ for(int i=0;i<2;i++){ for(int j=0;j<2;j++){ printf("%d",min(k,9)); k-=min(k,9); } printf("\n"); } } else printf("-1\n"); return; } if(h==2){ if(w%3==2 and k<=36){ vector<int> v(4); for(int i=0;i<4;i++){ v[i]=min(k,9); k-=v[i]; } for(int i=0;i<h;i++){ for(int j=0;j<w;j++){ if(i==0){ if(j%3==0)printf("%d",v[0]); else if(j%3==1)printf("%d",v[1]); else printf("0"); } else{ if(j%3==0)printf("%d",v[2]); else if(j%3==1)printf("%d",v[3]); else printf("0"); } } printf("\n"); } } else printf("-1\n"); return; } if(w==2){ if(h%3==2 and k<=36){ vector<int> v(4); for(int i=0;i<4;i++){ v[i]=min(k,9); k-=v[i]; } for(int i=0;i<h;i++){ if(i%3==0){ printf("%d%d\n",v[0],v[1]); } else if(i%3==1){ printf("%d%d\n",v[2],v[3]); } else printf("00\n"); } } else printf("-1\n"); return; } if(k>36){ printf("-1\n"); return; } if(h%3==2 and w%3==2){ vector<int> v(4); for(int i=0;i<4;i++){ v[i]=min(k,9); k-=v[i]; } for(int i=0;i<h;i++){ for(int j=0;j<w;j++){ if(i%3==0){ if(j%3==0)printf("%d",v[0]); else if(j%3==1)printf("%d",v[1]); else printf("0"); } else if(i%3==1){ if(j%3==0)printf("%d",v[2]); else if(j%3==1)printf("%d",v[3]); else printf("0"); } else{ printf("0"); } } printf("\n"); } return; } if(k<=9){ int ii,jj; if(h%3==0)ii=1; else if(h%3==1)ii=0; else ii=1; if(w%3==0)jj=1; else if(w%3==1)jj=0; else jj=1; for(int i=0;i<h;i++){ for(int j=0;j<w;j++){ if(i%3==ii and j%3==jj){ printf("%d",k); } else{ printf("0"); } } printf("\n"); } return; } else if(k<=18){ vector<int> v(2); v[0]=min(k,9); v[1]=k-v[0]; if(w%3==1 and h%3==2){ for(int i=0;i<h;i++){ for(int j=0;j<w;j++){ if(i%3==0 and j%3==0)printf("%d",v[0]); else if(i%3==1 and j%3==0)printf("%d",v[1]); else printf("0"); } printf("\n"); } } else if(h%3==1 and w%3==2){ for(int i=0;i<h;i++){ for(int j=0;j<w;j++){ if(j%3==0 and i%3==0)printf("%d",v[0]); else if(j%3==1 and i%3==0)printf("%d",v[1]); else printf("0"); } printf("\n"); } } } else{ printf("-1\n"); } } int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); int h,w,k; cin >> w >> h >> k; solve(h,w,k); }