首页 > 其他 > 详细

Codeforces Round #228 (Div. 1)B

时间:2014-02-09 20:59:39      阅读:403      评论:0      收藏:0      [点我收藏+]

进制构造 这里用了十进制 有点像串并联 每一位代表的数分开表示出来再把每一位的数并起来 比如892  就是800+90+2 800又可分为8*10*10。。。

bubuko.com,布布扣
 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<stdlib.h>
 6 #include<vector>
 7 #include<queue>
 8 #include<stack>
 9 using namespace std;
10 int w[1010][1010],s[20],en[20];
11 int a[20];
12 int main()
13 {
14     int k,i,j;
15     cin>>k;
16     int g = 0;
17     while(k)
18     {
19         a[++g] = k%10;
20         k/=10;
21     }
22     int o = 2;
23     int t;
24     for(i = 1 ; i <= g ; i++)
25     {
26         if(!a[i]) continue;
27         o++;
28         w[1][o] = w[o][1] = 1;
29         for(j = 1 ; j < 10-i ; j++)
30         {
31             w[o][o+1] = w[o+1][o] = 1;
32             o++;
33         }
34         for(j = 1; j <= a[i] ; j++)
35         w[o][o+j] = w[o+j][o] = 1;
36         t = o+a[i];
37         for(j = 1 ; j < i ; j++)
38         {
39             for(int k = o+1 ; k <= t ; k ++)
40             {
41                 for(int e = t+1 ; e <= t+10 ; e++)
42                 w[k][e] = w[e][k] = 1;
43                 o = t;
44             }
45             t+=10;
46         }
47         for(j = o+1 ; j <= t ; j++)
48         w[j][t+1] = w[t+1][j] = 1;
49         o = t+1;
50         w[o][2] = w[2][o] = 1;
51     }
52     cout<<o<<endl;
53     for(i = 1; i <= o ; i++)
54     {
55         for(j = 1; j <= o ; j++)
56         if(w[i][j])
57         cout<<"Y";
58         else
59         cout<<"N";
60         puts("");
61     }
62     return 0;
63 }
View Code

Codeforces Round #228 (Div. 1)B

原文:http://www.cnblogs.com/shangyu/p/3541792.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!