Java练习题(五)--数字特征值

题目内容:对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。这个整数在第n位上的数字记作x,如果x和n的奇偶性相同,则记下一个1,否则记下一个0。按照整数的顺序把对应位的表示奇偶性的0和1都记录下来,就形成了一个二进制数字。比如,对于342315,这个二进制数字就是001101。

这里的计算可以用下面的表格来表示:

按照二进制位值将1的位的位值加起来就得到了结果13。

你的程序要读入一个非负整数,整数的范围是[0,100000],然后按照上述算法计算出表示奇偶性的那个二进制数字,输出它对应的十进制值。

提示:将整数从右向左分解,数位每次加1,而二进制值每次乘2。

输入格式:一个非负整数,整数的范围是[0,1000000]。

输出格式:一个整数,表示计算结果。

输入样例:342315            输出样例:13

时间限制:500ms内存限制:32000kb

思路:因为输入的整数的范围要大于0.所以循环所用到的判断是input>0,yu是输入的取模,得到最右边的数,最后要对输入除以10,因为要不断得到最右边的数。

方法一:count是数位,可以先初始化为0,然后得到一个最右边的数时再加一。

import java.util.Scanner;

public class Hello {

    public static void main(String[] args) {

          Scanner in = new Scanner(System.in);

          int yu,ejz,sum=0;

          int count=0,ejzwz=1;

          int input=in.nextInt();

          while(input>0)

          {

                yu=input%10;

                count++;

                if(yu%2==count%2)

                {

                    ejz=1;

                }

                else

                {

                    ejz=0;

                }

                sum+=ejz*ejzwz;

                ejzwz*=2;

                input=input/10;

          }

          System.out.println(sum);

    }

}

方法二:先初始化count=1,得到数位后再得到数字

import java.util.Scanner;

public class Hello {

    public static void main(String[] args) {

          Scanner in =new Scanner(System.in);

          int number,ejz,yu;

          number=in.nextInt();

          int ejzwz=1,sum=0;

          int count=1;

          do {

                yu=number%10;

                if(yu%2==count%2) {

                    ejz=1;

                }

                else

                {

                    ejz=0;

                }

                sum+=ejz*ejzwz;

                ejzwz*=2;

                count++;

                number=number/10;

          }while(number>0);

          System.out.println(sum);

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 50道JAVA基础编程练习题 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    清先生阅读 341评论 0 2
  • 50道经典Java编程练习题,将数学思维运用到编程中来。抱歉哈找不到文章的原贴了,有冒犯的麻烦知会声哈~ 1.指数...
    OSET我要编程阅读 7,212评论 0 9
  • 2019年8月8日开始编写,等50题做完了希望不会太晚。 本篇纯属本人的练手作业,本人也不是什么大神,仅供参考。 ...
    墨鸢Wesley阅读 909评论 0 0
  • 各校历年复试机试试题 清华、北大、华科试题详细笔记部分,少笔记部分与少数leetcode【含个人整理笔记】 一、详...
    医学工程与科学园地阅读 1,250评论 0 1
  • 企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万...
    辽A丶孙悟空阅读 866评论 0 16