首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

强盗分赃有关问题

2013-10-19 
强盗分赃问题描述有天夜里5个强盗A、B、C、D、E抢到一大堆金币(金币个数不超过n个,n100000000),可是怎么也无

强盗分赃问题

描述
有天夜里5个强盗A、B、C、D、E抢到一大堆金币(金币个数不超过n个,n<=100000000),可是怎么也无法平均分成5份,吵吵嚷嚷……吵累了,只好先睡觉,准备第二天再分。夜深了,一个强盗A偷偷爬起来,先拿了一个金币私下放自己口袋藏好,再将金币分为5等份,将自己的那一份再私藏好就去睡觉了。随着第二个强盗B也爬起来,也是私拿了一个金币再分5等份,也私藏起自己那份就睡觉去了。后来的三个强盗C、D、E也都是这样办的。问最初有多少个金币?(最初的金币个数有多种可能,请输出n以内所有可能,从小到大排列)



输入格式
输入一个数,n。请输出金币数不超过n的可能的初始金币个数。


输出格式
初始金币个数的多种可能(初始金币个数小于等于n)。请输出不超过n的“所有的”可能,从小到大排列出,中间空格相连。分析
1.直接判断:使用函数判断每个数是否符合(理解简单),代码如下:
#include<iostream>#include<stdlib.h>using namespace std;int main(){    int n;    cin >>n;    if(n<3121)       cout <<"impossible";  //由上面推断知,最小满足是3121            int sum=0;    for(int x=255;x>0;x++){    //有上面推断知,最小满足X=255        sum=(12*x+8)+53*(x+1)/256;        if(sum>n) break;        if((53*(x+1)%256)==0)          cout <<sum<<" ";        }       return 0;}



热点排行