JD2018校招神奇数,疯狂队列
来源:互联网 发布:小蜜蜂软件 编辑:程序博客网 时间:2024/05/17 13:41
京东今年的校招题是说输入两个数 l , r; 在这个范围内的神奇数有多少个。
神奇数是什么? 121 134 45999这样的数叫神奇数,可以将组成一个数的所有一位数字分为两组,两组数的和相等
如: {1,1} {2} ; {1,3} {4};{4,5,9} {9,9};
现场ac10%,思路一直不对
事实上正确的思路应该是先将数打散分到数组里,之后计算后续步骤
AC代码如下
#include "stdafx.h"#include <iostream>#include <vector>#include <algorithm>using namespace std; bool IsNum(int &in){ vector<int> arry; int num=in; int half=0; while(num){//将数字打散存入arry数组 arry.push_back(num%10); half+=num%10; num/=10; } if (half%2!=0) return false; half/=2; vector<int> dp(half+1); //之后这一小段用的是01背包,判断能装下最大的数和一半是否相等。 for (int i=0;i<arry.size();i++){ for(int j=half;j>=arry[i];j--){ dp[j]=max(dp[j],dp[j-arry[i]]+arry[i]); } } return dp[half]==half;} int _tmain(int argc, _TCHAR* argv[]){ int l,r; cin>>l>>r; int count=0; for(int i=l;i<=r;i++){ if(IsNum(i)) count++;//如果是神奇数,计数+1 } cout<<count<<endl; system("pause"); return 0;}
疯狂队列这道题很简单
122333444455555666666777777788...
k个数字每个数字有k个
求第k个数字是什么
事实上这就是一个等差数列sum = 1+2+3+4+5+6...一直加到n 总共有 sum=n(1+n)/2
这是我们小学就学过的数学。
将输入的k带入公式,令sum=k;求解n n=(-b± sqrt(b^2-4*a*c))/ 2*a 只取正号
n%1输出即为解。
阅读全文
0 0
- JD2018校招神奇数,疯狂队列
- 2018网易校招笔试题之疯狂队列
- 2018网易校招编程题(7)疯狂队列
- 京东2018校招 神奇数 (c/c++)
- 疯狂数队列 编程 python
- 2018京东笔试 疯狂序列 神奇数
- 疯狂队列
- 疯狂队列
- 疯狂队列
- 神奇数
- 神奇数
- 神奇数
- 神奇数
- 神奇数
- 神奇数
- 疯狂队列(交错队列)
- [编程题] 疯狂队列
- 网易疯狂队列
- HTML登录界面
- 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153 是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
- UVA 572 Oil Deposits(DFS)
- 「NOIP2017模拟赛09.07」虐场
- 二进制逻辑运算求解137. Single Number II
- JD2018校招神奇数,疯狂队列
- 使用泛型简化动态代理
- 条件传送指令
- Mac 配置 php-fpm 时出现'/private/etc/php-fpm.conf': No such file or directory (2)
- minScale、maxScale与visible的区别
- Java设计模式之普通工厂模式
- sql注入原理2
- 求1+2!+3!+...+20!的和
- H5---基础知识介绍