結果
問題 | No.1398 調和の魔法陣 (構築) |
ユーザー | KKT89 |
提出日時 | 2021-02-19 23:52:32 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 19 ms / 3,153 ms |
コード長 | 3,892 bytes |
コンパイル時間 | 2,125 ms |
コンパイル使用メモリ | 207,980 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-17 00:08:05 |
合計ジャッジ時間 | 28,395 ms |
ジャッジサーバーID (参考情報) |
judge6 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,812 KB |
testcase_01 | AC | 2 ms
6,944 KB |
testcase_02 | AC | 2 ms
6,940 KB |
testcase_03 | AC | 2 ms
6,940 KB |
testcase_04 | AC | 2 ms
6,944 KB |
testcase_05 | AC | 2 ms
6,944 KB |
testcase_06 | AC | 12 ms
6,944 KB |
testcase_07 | AC | 2 ms
6,940 KB |
testcase_08 | AC | 13 ms
6,944 KB |
testcase_09 | AC | 14 ms
6,944 KB |
testcase_10 | AC | 2 ms
6,940 KB |
testcase_11 | AC | 12 ms
6,940 KB |
testcase_12 | AC | 2 ms
6,944 KB |
testcase_13 | AC | 12 ms
6,940 KB |
testcase_14 | AC | 14 ms
6,940 KB |
testcase_15 | AC | 2 ms
6,944 KB |
testcase_16 | AC | 19 ms
6,940 KB |
testcase_17 | AC | 19 ms
6,944 KB |
testcase_18 | AC | 18 ms
6,940 KB |
testcase_19 | AC | 18 ms
6,940 KB |
testcase_20 | AC | 2 ms
6,944 KB |
testcase_21 | AC | 13 ms
6,944 KB |
testcase_22 | AC | 14 ms
6,940 KB |
testcase_23 | AC | 2 ms
6,940 KB |
testcase_24 | AC | 12 ms
6,940 KB |
testcase_25 | AC | 2 ms
6,940 KB |
testcase_26 | AC | 12 ms
6,940 KB |
testcase_27 | AC | 14 ms
6,944 KB |
testcase_28 | AC | 2 ms
6,940 KB |
testcase_29 | AC | 12 ms
6,944 KB |
testcase_30 | AC | 2 ms
6,944 KB |
ソースコード
#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(w%3==0 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==1)printf("%d",v[0]); else if(i%3==1 and j%3==1)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 if(h%3==0 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==1)printf("%d",v[0]); else if(j%3==1 and i%3==1)printf("%d",v[1]); else printf("0"); } printf("\n"); } } else printf("-1\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); }