結果
問題 | No.1398 調和の魔法陣 (構築) |
ユーザー |
|
提出日時 | 2021-02-19 23:52:32 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 32 ms / 3,153 ms |
コード長 | 3,892 bytes |
コンパイル時間 | 2,261 ms |
コンパイル使用メモリ | 199,072 KB |
最終ジャッジ日時 | 2025-01-19 01:58:43 |
ジャッジサーバーID (参考情報) |
judge4 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 28 |
ソースコード
#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);}