(第二题) 逻辑,条理思维!!!
来源:互联网 发布:淘宝客内部卷网站源码 编辑:程序博客网 时间:2024/06/04 17:53
问题:
n个数 每个随机是 5 或是 0 判断这n个数所组成的能被90整除的最大的数是多少,如果没有 输出-1,
(注意不一定每个数都要用到!!)
分析:
// 是90 的倍数 那么个位一定是0 所以不考虑个位的0 那么这个最大的数只需要是9 的倍数即可
// 一定要知道 ,如果一个数的所有位的数相加的 和 是9的倍数,那么这个数就是9的倍数, 所以统计 5 出现的 个数 y, 判断 5*y 是否 9的倍数 ,
// 若要成立,那么y 一定是9 的倍数!(9 18 27····)
// 并且至少要有一个0 。!!
// 要求是最大的,那么这个数 一定是 555...000...., 不可能5 和0 交叉出现!!!!!
代码:
#include <stdio.h> int main(){ int n; scanf("%d",&n); int i, a, x = 0, y = 0; for(i = 0; i < n; i++) { scanf("%d",&a); if(a == 0) x++; // 0 的个数 if(a == 5) y++; // 5 的个数 } if(x >= 1 && y>= 9) // 所求存在的基本条件: 至少一个0,5的个数<=9, { for(i = 1; i <= (y/9)*9; i++) // (y/9)*9(设为Y) 并不是废话 反而非常巧妙 !!!! 得出 <=y的最大9的倍数 比如 y=10,11,12 ,Y=9. y=18,19,20,21 Y=18 { printf("5"); // 这样就非常巧妙的输出了符合要求的这个数(存在的情况下)的前半部分 } for(i = 1; i <= x; i++) { printf("0"); //在后面输出所有的 0 } printf("\n"); } else // 如果不满足基本条件 { if(x != 0) // 并且存在 0 { printf("0\n"); // 注意 0 也能整除90 啊啊啊!!!!! } else { printf("-1\n"); // 连0 都没有 就输出 -1 吧! } } return 0;}
阅读全文
0 0
- (第二题) 逻辑,条理思维!!!
- 思维逻辑题
- HDU 4611 Balls Rearrangement (数学-思维逻辑题)
- 2013-11-02 实验之泊松分酒(思维逻辑题)
- 2013-11-09 实验之买不到的糖果数目(递推思维+思维逻辑题)
- 2013-10-30 实验之古堡算式(思维逻辑题)
- 2013-11-03 实验之最大公共子串(思维逻辑题)
- 51nod 1557 两个集合 (二分搜索,思维逻辑好题)
- 思维逻辑训练
- 思维逻辑的清晰
- 思维逻辑面试题
- 思维逻辑很重要
- 思维 和 逻辑
- 思维逻辑练习题
- 数据挖掘考试重点(条理版)
- 数据挖掘考试重点(条理版)
- 暑假训练第二期---思维题2
- hdu 5504 GT and sequence(思维,逻辑,脑洞)
- 7-38 寻找大富翁(25 分)
- java 反射机制 之 Class.forName() 获取class的对象
- js实现无缝轮播
- 【JavaScript学习笔记】什么是NodeJs?
- java命名简写,according to jdk naming'usage
- (第二题) 逻辑,条理思维!!!
- Ubuntu16.04禁用客人会话
- Java复习笔记---泛型
- Mybatis实现简单的增删改查
- JS基础笔记
- QT 窗体上放GIF动态图
- 【实战\聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎项目笔记】第4章 scrapy爬取知名技术文章网站(2)
- java语法简单规范,根据jdk
- Linux Zookeeper的安装