找到满足条件的数组
来源:互联网 发布:中国经济增长速度 知乎 编辑:程序博客网 时间:2024/04/28 20:38
给定函数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的位置对应的整数就是不能由其它数生成的。
public class TestAr { public static void main(String[] args) { //声明数组 int[] arr = new int[10000]; //初始化数组 for(int i=0;i<arr.length;i++){ arr[i] = 0; } //遍历1到10000,将算出来的A存入数组。 for(int i=0;i<10000;i++){ //将i+1得到数字 int position = i+1; //用这个数字算出A if(position>=10&&position<100){ position += position%10; position += position/10; }else if(position>=100&&position<1000){ position += position%10; position += (position-(position/100)*100)/10; position += position/100; }else if(position>=1000&&position<10000){ position += position%10; position += (position-(position/100)*100)/10; position += (position-(position/1000)*1000)/100; position += position/1000; } if(position-1<10000){ System.out.println(i+1+":"+position); arr[position-1] = 1; } } for(int i=0;i<arr.length;i++){ if(arr[i]==1){ System.out.println(i+1); } } }}
1 0
- 找到满足条件的数组
- 百度面试题找到满足条件的数组
- 百度面试题:找到满足条件的数组
- 找到结构体数组某个属性满足条件的其他属性\或满足属性条件的样本
- 百度面试题 找到满足条件的数
- Python:找到列表中满足某些条件的元素
- 从三个数组中选择满足条件的三个数
- JS删除一个数组中满足条件的所有数据
- 满足条件的整数
- 满足条件的整数
- 满足条件的n
- 缓存满足的条件
- 能找到满足条件的记录,则统统列出来。不存在满足条件的记录,则列出来一条“补null”的记录
- POJ2941:满足条件的整数
- 求满足条件的序列
- 求满足条件的和
- 找出满足条件的数
- 求满足条件的路径
- CodeForces 669D Little Artem and Dance
- 五一游,清华,北大
- JAVA语言之计数排序
- Geekband009第九周笔记分享
- 动态删除ArrayList中的元素
- 找到满足条件的数组
- Javascript事件全解析——事件概述及传统事件类型
- 读取Kafka集群的消息
- php环境搭建
- java热部署及类加载
- HTTP协议
- java_包
- 【转】ANDROID APK的数字签名的作用和意义
- 用户的退出登录功能