百度面试题:找到满足条件的数组
2015-04-23 21:36
267 查看
题目来自这个博客:http://blog.csdn.net/hackbuteer1/article/details/7348968
这是第二题。
给定函数d(n)=n+n的各位之和,n为正整数,如d(78)=78+7+8=93。这样这个函数可以看成一个生成器,如93可以看成由78生成。
定义数A:数A找不到一个数B可以由d(B)=A,即A不能由其他数生成。现在要写程序,找出1至10000里的所有符合数A定义的数。
回答:
申请一个长度为10000的bool数组,每个元素代表对应的值是否可以有其它数生成。开始时将数组中的值都初始化为false。
由于大于10000的数的生成数必定大于10000,所以我们只需遍历1到10000中的数,计算生成数,并将bool数组中对应的值设置为true,表示这个数可以有其它数生成。
最后bool数组中值为false的位置对应的整数就是不能由其它数生成的。
#include <iostream>
using namespace std;
int funcd(int n);
void main()
{
bool a[10000];
for (int i=0;i<10000;i++)
{
a[i]=false;
}
for (int i=1;i<10000;i++)
{
int d=funcd(i);
if(d<=10000)
{
a[d-1]=true;
}
}
for (int i=0;i<10000;i++)
{
if (a[i]==false)
{
cout<<i+1<<endl;
}
}
int pause;
cin>>pause;
return;
}
int funcd(int n)
{
int res=n;
while(n/10 > 0)
{
res+=n%10;
n=n/10;
}
res+=n;
return res;
}
这是第二题。
给定函数d(n)=n+n的各位之和,n为正整数,如d(78)=78+7+8=93。这样这个函数可以看成一个生成器,如93可以看成由78生成。
定义数A:数A找不到一个数B可以由d(B)=A,即A不能由其他数生成。现在要写程序,找出1至10000里的所有符合数A定义的数。
回答:
申请一个长度为10000的bool数组,每个元素代表对应的值是否可以有其它数生成。开始时将数组中的值都初始化为false。
由于大于10000的数的生成数必定大于10000,所以我们只需遍历1到10000中的数,计算生成数,并将bool数组中对应的值设置为true,表示这个数可以有其它数生成。
最后bool数组中值为false的位置对应的整数就是不能由其它数生成的。
#include <iostream>
using namespace std;
int funcd(int n);
void main()
{
bool a[10000];
for (int i=0;i<10000;i++)
{
a[i]=false;
}
for (int i=1;i<10000;i++)
{
int d=funcd(i);
if(d<=10000)
{
a[d-1]=true;
}
}
for (int i=0;i<10000;i++)
{
if (a[i]==false)
{
cout<<i+1<<endl;
}
}
int pause;
cin>>pause;
return;
}
int funcd(int n)
{
int res=n;
while(n/10 > 0)
{
res+=n%10;
n=n/10;
}
res+=n;
return res;
}
相关文章推荐
- 百度面试题找到满足条件的数组
- 百度面试题 找到满足条件的数
- 百度面试题——找出满足条件的数
- 百度面试题 号码找到符合条件
- 找到结构体数组某个属性满足条件的其他属性\或满足属性条件的样本
- 找到满足条件的数组
- @陈利人 : #面试题#给定两个数组X和Y,元素都是正数。请找出满足如下条件的数对的数目: x^y > y^x,即x的y次方>y的x次方;x来自X数组,y来自Y数组
- #面试题--求数组中满足条件(a[0..i-1]<=a[i]<=a[i+1..N-1])的元素
- 百度面试题-- 两个递增数组,找到二者合并后的第K大数
- 九度OJ 1504 把数组排成最小的数【算法】-- 2009年百度面试题
- 百度面试题:从已排序的数组中求绝对值最小的元素
- 谷歌面试题--一个大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间
- 谷歌面试题之求一个满足要求的数组
- 【百度面试题】把数组排成最小的数
- 【每日面试题】随机数构成的数组中找到长度大于=3 的最长的等差数列
- python数组过滤,输出满足条件的元素,例如python输出一维矩阵中的非0元素
- 【百度面试题】把数组排成最小的数
- 面试题:编写函数找到数组中所有和为指定值的整数对
- 百度面试题之找出数组中之出现一次的两个数(异或的巧妙应用)
- 一道面试题:求一个满足要求的数组