京东2018秋招c++岗 神奇数

题意大概是:

一个数比如242,把所有数字分成两组,而且两组的和相等,那么这个数就是神奇数,此时242,能够分成{2,2}和{4},所以242是神奇数。

题目要求输入n和m求[n,m]区间内神奇数的个数。

思路:

对于任意一个数字,将每一位上的数字保存到数组里,并求所有位上的数字的和sum。然后使用回溯法遍历数组,

查看数组内是否存在和为sum/2的情况,如果存在则为神奇数。

bool isfind(vector<int>& nums, int sum, int cur, int begin)
{
    if( begin == nums.size() ) return false;
    if( cur == sum / 2 ) return true;
    bool res1 = isfind( nums, sum, cur+nums[begin], begin+1 );
    if( res1 ) return true;
    bool res2 = isfind( nums, sum, cur, begin+1 );
    if( res2 ) return true;
    return res1 || res2;
}

bool fenjie(long long n)
{
  vector<int> dig;
  int sum = 0;
  if(n==0)
  {
    dig.push_back(0);
    return false;
  }
  int t =0;
   while(n>0)
   {
     t = n%10;
     n/=10;
dig.push_back(t);
sum+=t;
  }
  sort(dig.begin(),dig.end());
  if(sum&1)return false;
  return isfind(dig,sum,0,0);
}
void core()
{
  int n,m,ret =0;
  cin>>n>>m;
  for( int i = n; i <= m; i++ )
    {
       if (fenjie(i))ret++;
    }
  cout<<ret<<endl;
}
int main()
{
   core();
}
时间: 2024-10-06 00:40:07

京东2018秋招c++岗 神奇数的相关文章

2018秋招面试题

https://blog.csdn.net/bntX2jSQfEHy7/article/details/81187626 各大企业面试题: https://blog.csdn.net/huangshulang1234/article/details/79102943 一.阿里巴巴面试 第一个:阿里面试都问什么? :(55分钟) 01 1.开发中Java用了比较多的数据结构有哪些?2.谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题的?这些数据结构中是线程安全的吗?

进制均值(京东2017秋招真题)

思路:利用取余数方法可以得到转换进制之后数字表示的所有位数,本题只求和的平均值,可以不严格       考虑正排列或者逆排列 之后使用fractions的Fraction函数,方便满足需要的分数格式要求 语句:fractions的Fraction函数  Fraction(a,b)中a表示分子,b表示分母 python代码: # -*- coding: utf-8 -*- import fractions as f while 1:     number=[]     a=int(raw_inpu

采购单(京东2017秋招真题)

本来也不算很难的一道题,但是总是只通过60% 或者 80% 一眼就看出思路,代码也不难的题就是不能全部通过也是神烦,应该是格式上的问题,也不算完全弄明白了,简单说说,作为一种经验. 思路:给价钱 和 每种物品的个数排序 最贵:最高价买最多的物品,累加 最低:最低价买最多的物品.累加 语句:list.count()    list.sort()    set(list)等 以下为正确的python语句 while 1:     r = raw_input()     if r != '':    

集合(京东2017秋招真题)

解答思路很简单,使用Python的set函数和sort函数就可以完成,但是做完之后有时候有错误 如图 明明使用了sort但没有排序 原来是因为读入之后数字是字符串格式,所以排序的时候15 就排在了 6的前面 使用 int 调整一遍列表中元素的类型就可以了 while 1:     (x,y)=(int(x) for x in raw_input().split())     ary1=raw_input().split()     ary2=raw_input().split()     ary

2018秋招小红书算法方向在线编程题

代码如下: class TreeNode: def __init__(self, x): self.left=None self.right=None self.value=x def BuildTree(ceng, zhong): if len(ceng)==0: return None if len(ceng)==1: return TreeNode(ceng[0]) else: flag=TreeNode(ceng[0]) root=ceng[0] zong=zhong[:zhong.in

2018秋招数据库笔试面试题汇总

基础概念 1. 什么是数据库事务?事务有什么特点? 数据库事务:是指作为单个逻辑工作单元执行的一系列操作,这些操作要么全做,要么全不做,是一个不可分割的工作单元. 事务特点: 原子性 一致性 隔离性 持久性特 2. 主键和外键的区别? 主键所在的列的值是唯一的,不可为空的 外键所在的列的值可以重复,可以为空的,不能创建对应表中不存在的外键值 3. truncate与delete的区别? 比较 truncate delete 相同点 删除表中的全部行 不带where字句删除表中的全部行 相同点 删

腾讯 2018 秋招精选(50 题)

AC # 题名 难度   2 两数相加  中等   4 两个排序数组的中位数  困难   5 最长回文子串  中等   7 反转整数  简单   8 字符串转整数  中等   9 回文数   简单   11 盛最多水的容器  中等   14 最长公共前缀  简单   15 三数之和   中等   16 最接近的三数之和  中等   20 有效的括号  简单   21 合并两个有序链表  简单   23 合并k个有链表  困难   26 删除排序数组中的重复项   简单   33 搜索旋转排序数组

2018秋招校招后端方向(第二批)

用户喜好 为了不断优化推荐效果,今日头条每天要存储和处理海量数据.假设有这样一种场景:我们对用户按照它们的注册时间先后来标号,对于一类文章,每个用户都有不同的喜好值,我们会想知道某一段时间内注册的用户(标号相连的一批用户)中,有多少用户对这类文章喜好值为k.因为一些特殊的原因,不会出现一个查询的用户区间完全覆盖另一个查询的用户区间(不存在L1<=L2<=R2<=R1). 输入描述: 输入: 第1行为n代表用户的个数 第2行为n个整数,第i个代表用户标号为i的用户对某类文章的喜好度 第3行

第K个幸运数(京东2017秋招真题)

题目 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字.前几个幸运数字为:4,7,44,47,74,77,444,447... 现在输入一个数字K,输出第K个幸运数. 输入 第一行一个数字T(T<=1000)表示测试数据的组数.对于每组测试数据,输出一个数K(1 <= K <= 100000000000000000000000000) 思路 只有四和7,而且还和顺序有关,4,7,44,47,74,77 ,不免想到二进制0,1,00,01,10,11