# BZOJ 1653 [Usaco2006 Feb]Backward Digit Sums

## [Usaco2006 Feb]Backward Digit Sums

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 447  Solved: 312
[Submit][Status][Discuss]

## Description

FJ and his cows enjoy playing a mental game. They write down the numbers from 1 to N (1 <= N <= 10) in a certain order and then sum adjacent numbers to produce a new list with one fewer number. They repeat this until only a single number is left. For example, one instance of the game (when N=4) might go like this: 3 1 2 4 4 3 6 7 9 16 Behind FJ's back, the cows have started playing a more difficult game, in which they try to determine the starting sequence from only the final total and the number N. Unfortunately, the game is a bit above FJ's mental arithmetic capabilities. Write a program to help FJ play the game and keep up with the cows.

## Input

* Line 1: Two space-separated integers: N and the final sum.

## Output

* Line 1: An ordering of the integers 1..N that leads to the given sum. If there are multiple solutions, choose the one that is lexicographically least, i.e., that puts smaller numbers first.

4 16

## Sample Output

3 1 2 4

OUTPUT DETAILS:

There are other possible sequences, such as 3 2 1 4, but 3 1 2 4
is the lexicographically smallest.

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<iomanip>
using namespace std;
int main()
{
int n,m;
int jie,a,f;
bool book;
scanf("%d%d",&n,&m);
jie=jie=1;
for(int i=2;i<=n;i++)jie[i]=jie[i-1]*i;
int now=0;
while(jie[n]--)
{
int temp=now;
memset(book,0,sizeof(book));
for(int i=n-1;i>=0;i--)
{
int k=temp/jie[i],tot=0;
for(int j=1;j<=n;j++)
{
if(!book[j])tot++;
if(tot==k+1)
{a[n-i]=j;book[j]=1;break;}
}temp%=jie[i];
}
for(int i=1;i<=n;i++)f[i]=a[i];
for(int i=1;i<=n;i++)
for(int j=1;j<=n-i;j++)
f[j]=f[j]+f[j+1];
//cout<<f<<endl;
if(f==m)
{
for(int i=1;i<=n-1;i++)
printf("%d ",a[i]);printf("%d\n",a[n]);
return 0;
}
now++;
}
}

04-22 609                                                                          03-30 150
02-17 1372
03-17 78
12-12 27
03-15 105
08-18 821
02-25 1045
02-12 48
08-19 37
12-26 175
04-12 63
09-18 67
04-26 443
12-27 619
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 BlackJack_

¥2 ¥4 ¥6 ¥10 ¥20  余额支付 (余额：-- )  扫码支付 获取中  扫码支付