POJ 1316(Self Numbers) Java

来源:互联网 发布:数据库设计大作业 编辑:程序博客网 时间:2024/04/27 21:22

筛法水题!!!

import java.io.BufferedWriter;import java.io.OutputStreamWriter;import java.io.PrintWriter;/** * 题意:找出 1-10000 之间的自私数;  *      若满足 d(n) = n + (n 的每一位数) , d(n) 不是自私数  *      如:d(75) = 75 + 7 + 5 = 87 , 所以 87 不是自私数。 *  * 解决方案:暴力,遍历每一个数 *  * @author tinyDolphin */public class Main {    private static boolean[] isNotSelfNumbers = new boolean[10050]; // 全部默认为 false    private static void work(PrintWriter out) {        for (int index = 1; index < 9999; index++) {            // 以下加法操作,d(75) = 75+7+5=87            int temp = index;            int sum = temp;            // 加上除第一位外的数            while (temp / 10 != 0) {                sum += temp % 10;                temp /= 10;            }            // 加上第一位数            sum += temp % 10;            // 筛选出 selfNumbers            isNotSelfNumbers[sum] = true;            // 输出 selfNumbers            if (!isNotSelfNumbers[index]) {                out.println(index);            }        }    }    public static void main(String[] args) {        PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));        work(out);        out.flush();    }}
原创粉丝点击