PKU 1012 Joseph

Run IDUserProblemResultMemoryTimeLanguageCode LengthSubmit Time
6623536kingpro1012Accepted248K0MSC++247B2010-03-24 22:26:21

 

 

 
  
1 #include < iostream >
2   using namespace std;
3
4   int main()
5 {
6 int x[ 14 ] = { 0 , 2 , 7 , 5 , 30 , 169 , 441 , 1872 , 7632 , 1740 , 93313 , 459901 , 1358657 , 2504881 };
7 int i = 0 ;
8 while ( 1 )
9 {
10 cin >> i;
11 if (i == 0 )
12 break ;
13 cout << x[i] << endl;
14 }
15 return 0 ;
16 }

 

我承认我作弊...哈哈...

x数组时这么算出来的:

 

 
  
1 int main()
2 {
3 bool k[ 26 ];
4 for ( int i = 1 ; i < 14 ; i ++ )
5 for ( int s = 1 ; ;s ++ )
6 {
7 int j = 0 , n = 0 ;
8 for (j = 0 ; j < i * 2 && (k[j] = true ); j ++ );
9 for (j -= 1 ; n < i; n ++ )
10 {
11 for ( int m = 0 , t = s % ( 2 * i - n); m < t && (k[ ++ j >= i * 2 ? (j -= i * 2 , j) : j] && m ++ , true ););
12 if (j < i) break ;
13 k[j] = false ;
14 while ((j < 1 && (j += i * 2 ) && false ) || ! k[ -- j]);
15 }
16 if (n == i)
17 {
18 cout << i << " " << s << endl;
19 break ;
20 }
21 }
22 return 0 ;
23 }

 

 

这个 恩…… 也是解题的一个方法...

转载于:https://www.cnblogs.com/Kingpro/archive/2010/04/06/PKU_1012_Joseph.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值