• 吸血鬼数


    它是从合数v开始,该合数为n位数(且n为偶数),然后用v的各个数字组成两个n/2位数的正整数x和y(x和y不能同时以0为个位数),若x和y的积刚好就是v,那么v就是吸血鬼数,而x和y则称为尖牙(fangs)。

    假设四位的vampire digit  n =  1000a+100b+10c+d; 则它的两个尖牙x=10a+c;y=10b+d;//也可以x=10b+c,y=10d+a,可以任意组合
    即 n=100(10a+b)+(10c+d)=x*y; n%9=3; x+y=10a+c+10b+d x*y-x+y=900a+90b 两边同时%9 得x*y%9=(x+y)%9
    //: ch4_10/Vampire.java
    /** @version 1.0
      * @author  Tinking in java
      */
    
    /*吸血鬼数算法,假定吸血鬼数为n,x,y为尖牙
      *一.给定所求吸血归属的范围
      *二.确定是否时吸血鬼数
      *1.if (x*y)%9!=(x+y)%9,不是吸血归属
      *2.if 是吸血归属
      *3.取出n x y 三个的每位数字
      *4.if n 的每位数字 全部是由x y 的每位数字组成 ,确定时吸血鬼数
      */
    
    public class Vampire
    {
        public static void main(String[] args)
        {
            vampire();
        }
        static void vampire()
        {
            int x=0;
            int y=0;
            int count = 0;
            int [] num =  new int[4];
            int [] vam =  new int[4];
            for(x=10;x<=100;x++)
                for(y=10;y<=99;y++)
                {
                    if((x*y)%9!=(x+y)%9)
                        continue;
                    count = 0;
                    int product = x*y;
                    vam[0] = product/1000; //千位
                    vam[1] = (product%1000)/100;//百位
                    vam[2] = (product%1000%100)/10;   //十位
                    vam[3] = product%1000%100%10;   //个位
                    num[0] = x/10;//十位
                    num[1] = x%10;//个位
                    num[2] = y/10;
                    num[3] = y%10;
                    for(int i = 0;i<4;i++)
                        for(int j = 0;j<4;j++)
                            if(vam[i]==num[j])
                            {
                                count++;
                                vam[i]=-1;  
                                num[j]=-2; //防止重复计算
                           
                               if(count == 4)
                                 System.out.println("vampire = "+product+",x = "+ x + ",y = "+ y);
                           }
                }
        }
                    
    }
  • 相关阅读:
    struct&Method
    SetFinalizer、runtime.GC
    Map(没有写底层)
    数组和切片
    函数
    指针、Time
    字符串、strings、strconv
    基本类型和运算符
    第二阶段的事后诸葛亮
    第二个冲刺阶段第10天
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10015333.html
Copyright © 2020-2023  润新知