我说,别白嫖

目录

11075 强盗分赃

题目:

输入格式

输出格式

输入样例

输出样例

提示

代码:

17963 完美数

题目:

输入格式

输出格式

输入样例

输出样例

提示

代码:

!tips:c语言次幂函数用 double pow(double a, double b) 可求


11075 强盗分赃

题目:

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

输入格式

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

输出格式

初始金币个数的多种可能(初始金币个数小于等于n)。请输出不超过n的“所有的”可能,从小到大排列出,中间空格相连。如果不超过n没有一种可能,输出impossible(无标点,无大写)
例如输入10,则输出impossible

输入样例

8000

输出样例

3121 6246

提示

此题所说的是:每个强盗私拿1个金币后都可以五等分,再私藏起1份,留下4份。
这样的初始金币个数是怎样的数,才能满足这个条件。方法一:此题若仅采用程序实现的话是较为简单的,可使用5次的递归算法或循环处理。
递归算法如下(循环处理也很简单):
int count = 0;
int func(int num)  //判断初始为num的数是否合适?合适返回1,不合适返回0
{  int temp = num-1;if(temp%5 == 0 && count<5){  count++;return func(temp/5*4);}elseif (count==5)return 1;elsereturn 0;
}但若要分析初始金币个数的通项函数表达就更难一些了。方法二:
从最后一个强盗往前考虑,假设到第五个强盗E时,平均每个强盗得到x个金币
第五个强盗E藏掉一个金币后剩 5x 个
第四个强盗D藏掉一个金币后剩 5(5x+1)/4 = 25x/4+5/4 = (x+1)/4 + ...
第三个强盗C藏掉一个金币后剩 5(25x/4+5/4+1)/4 = 125x/16+45/16 = 13(x+1)/16 + ...
第二个强盗B藏掉一个金币后剩 5(125x/16+45/16+1)/4 = 625x/64+305/64 = 49(x+1)/64 + ...
第一个强盗A藏掉一个金币后剩 5(625x/64+305/64+1)/4 = 3125x/256+1845/256 = 53(x+1)/256 + ...
因原来共有金币 3125x/256+1845/256+1 = 3125x/256+2101/256 = (12x+8)+53(x+1)/256
这里是突破口:
x,(x+1)/4,13(x+1)/16,49(x+1)/64,53(x+1)/256 都应是整数,最后一个条
件 53(x+1)/256 是整数决定了初始金币的最小个数。所以 x=255 时最小的初始
金币总数(12x+8)+53(x+1)/256=3121个。方法三:
或者这样分析,设金币总数n,由于5个强盗都是先藏一个后,发现余下的金币刚好均分5份,
所以设想在总数中加入4个新金币,则每个强盗占有的金币数不会改变(包括藏了的那一个),
从而每次分金币时这4个假想的金币会留存到后一层总数中,这使得每次分5份都是恰好的整数,
由此可见,n+4至少是5^5的整数倍,所以n的最小值为 5^5-4=3121。
其余可能的n值为 n = k*(5^5)-4,k为大于1的整数。

代码:

数学分析法

#include <iostream>
#include <stdio.h>
#include <stdlib.h>using namespace std;int main()
{int n;scanf("%d",&n);if(n<3121) printf("impossible");int sum =0;for(int x=255;; x++){sum = (12*x + 8)+ 53*(x+1)/256;if(sum > n) break;if((53*(x+1)%256)==0)printf("%d ",sum);}return 0;
}

17963 完美数

题目:

现在请你以下列格式输出前8个完美数,每行一个完美数,前面是序号后面是完美数,中间用空格间隔。如:
1 6
2 xx
3 xxx
……

输入格式

输出格式

输出前8个完美数,每行一个完美数,前面是序号后面是完美数,中间用空格间隔。

输入样例

输出样例

1 6
2 xx
3 xxx
……
8 xxxxxxxx

提示

欧拉证明了,当2^p-1是素数时,2^(p-1)*(2^p-1)是完美数,而且偶完美数都具有这种
形式。目前还没有发现奇完美数。
一般认为存在有无穷多个完美数,但目前知道的2^p-1是素数的p只有47个,他们依次的
p值如下:
2 3 5 7 13 17 19 31 61 89 107 127 521 607 1279 2203 2281 3217 4253 4423 9689
9941 11213 19937 21701 23209 44497 86243 110503132049 216091 756839 859433
1257787 1398269 2976221 3021377 6972593 13466917 20996011 24036583 25964951
30402457 32582657 37156667 42643801 43112609 这题要求输出前8个,用这个序列的前八个当做p,计算2^(p-1)*(2^p-1)即是完美数。如果此题采用完美数定义(如果一个数的真约数之和等于这个自然数本身,则这个自然数
就称为完美数)来求解的话,产生不了前八个,会计算超时。还有,此题需要采用64位的整数才可。

代码:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
using namespace std;int main()
{int perf[8] = {2,3,5,7,13,17,19,31};for(int i=0 ;i<8; i++){long long int sum = pow(2,perf[i]-1)*(pow(2,perf[i])-1);printf("%d %lld\n",i+1,sum);}
}

按照提示写即可。用数组存储预先数。

!tips:c语言次幂函数用 double pow(double a, double b) 可求

【scau算法分析设计】11075强盗分赃|17963 完美数(c)相关推荐

  1. 11075 强盗分赃

    递归解法 #include <iostream> using namespace std; #define _CRT_SECURE_NO_WARNINGS #include<stdi ...

  2. 强盗分赃:充满逆向思维“的故事

    从前有五个强盗抢得了100枚金币,但在分赃这100枚金币上的问题争吵不休,最后他们决定进行民主分配: 首先由5个人进行抽签选举,抽签获得每个人的号码,然后由抽到1号的人提出分配方案,然后进行大众投票, ...

  3. c语言编程 完美数,用完美数的数字之美激发学生学习C语言编程的兴趣

    崔孝凤 摘要:对于c语言的初学者来说,激发出学习c语言的兴趣至关重要,该文通过探讨完美数的多种实现方法的案例教学,同时列举完美数特有性质,激发学生的学习兴趣,提高教学质量. 关键词:c语言;完美数;案 ...

  4. LeetCode Algorithm 507. 完美数

    507. 完美数 Ideas 把所有的约数全都加起来就行了,也没啥. Code Python class Solution:def checkPerfectNumber(self, num: int) ...

  5. java求完数(完全数 完美数)

    package com.face;public class SumNum {public static void main(String[] args) {System.out.println(&qu ...

  6. 请设计一个栈,实现十进制数转任意进制数。

    文章目录 1.题目描述 2.代码实现 1.题目描述 请设计一个栈,实现十进制数转任意进制数 2.代码实现 #include <iostream> using namespace std;# ...

  7. LeetCode 507. 完美数

    1. 题目 对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为"完美数". 给定一个 整数 n, 如果他是完美数,返回 True,否则返回 False 示例: ...

  8. 完美数:数学宝库中的一颗璀璨明珠

    无论在外在的物质世界里,还是在内在的精神世界里,都不能没有数学.最早悟出万物背后都有数的法则在起作用的,是生活在公元前6世纪的古希腊数学家和哲学家毕达哥拉斯:而他及其学派无论在代数上还是几何上都有很多 ...

  9. python判断是否为完全数_Python识别完美数

    完美数 完美数(perfect number,又称完全数)指,它所有的真因子(即除了自身以外的因子)和,恰好等于它自身. 第一个完美数:6, 第二个完美数:28, 第三个完美数:496, 第四个完美数 ...

最新文章

  1. 华硕p8b75v主板说明书_主板如何接线
  2. error40无法打开到sql_SQL入门学习,初步认识ADO
  3. java ec_Java ECKey.setK方法代码示例
  4. 在Ubuntu下进行安卓开发遇到“insufficient permissions for device: user in plugdev group; ”问题的解决办法
  5. web和mysql连接并增删改查_Java Web 使用IDEA对mysql数据库进行简单增删改查操作(附源码下载)...
  6. 来和 webpack 谈场恋爱吧!这课程好甜!
  7. GIS实战应用案例100篇(三)-基于NDVI指数的绿地信息提取
  8. 炎炎夏日需要一个清凉的地 - 自制水冷系统(十一 指尖的思绪之程序篇)
  9. scrollTop的兼容性小结
  10. 记录一次maven依赖成功导入,但找不到相关包的IDEA臭bug
  11. BZOJ3170: [Tjoi2013]松鼠聚会(切比雪夫距离转曼哈顿距离)
  12. BZOJ 2660 (BJOI 2012) 最多的方案
  13. Dataframe 新增一列, apply 通用方法
  14. 字符指针变量和字符数组的对比
  15. 11.文件与文件系统的压缩与打包
  16. spring cloud构建互联网分布式微服务云平台-服务提供与调用
  17. 基于matlab的声音个数识别
  18. jieba库和wordcloud库
  19. qq四国军旗2.1 beat03 builde018记牌器开发思路(四)
  20. java则么实现md5解密_java的md5解密

热门文章

  1. NuGet命令的用法
  2. 【数据分析】黑色星期五(代码2)销售额分析1、2
  3. 《王阳明心学营销》营销落地-知行合一
  4. java kml_当Java遇上KML
  5. 自学网络安全的三个必经阶段(含路线图)
  6. 微信的订阅号和服务号如何区分?
  7. 数学建模之线性规划问题(含整数规划和0-1规划)
  8. C++ scanf()函数
  9. 基于L298N的STM32的直流电机PWM调速控制 原理及注意事项
  10. excel切片器_用Excel切片器做自动化表格,动态呈现,瞬间高大上