• 中国MOOC_零基础学Java语言_第3周 循环_2数字特征值


    2
    数字特征值(5分)

    题目内容:

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

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

    数字

    3

    4

    2

    3

    1

    5

    数位

    6

    5

    4

    3

    2

    1

    数字奇偶

    数位奇偶

    奇偶一致

    0

    0

    1

    1

    0

    1

    二进制位值

    32

    16

    8

    4

    2

    1

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

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

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

    输入格式:

    一个非负整数,整数的范围是[0,1000000]。

    输出格式:

    一个整数,表示计算结果。

    输入样例:

    342315

    输出样例:

    13

    时间限制:500ms内存限制:32000kb
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		int number = 0;// 读入一个非负整数
    		int digit = 0;// 分解
    		int wei = 0;// 数位
    		int sum = 0;// 计算结果
    		Scanner in = new Scanner(System.in);
    
    		number = in.nextInt();
    
    		do {
    			digit = number % 10;
    			number /= 10;
    			wei++;
    
    			if ((digit % 2) == (wei % 2)) {
    				sum += Math.pow(2, (wei - 1));
    			}
    		} while (number > 0);// 将整数从右向左分解,数位每次加1,而二进制值每次乘2。
    
    		System.out.println(sum);
    	}
    }
    
  • 相关阅读:
    合并两个排序的链表
    C#中调用C++的DLL文件
    C#获取进程的主窗口句柄
    在VS2008中编译纯c/c++程序并由c#调用过程 及 C++引用c#dll 模拟登陆实现
    C#多屏幕显示器编程
    Windows系统下的多显示器模式开发日记
    在 C# 中调用 C++
    C# 中调用C++ DLL (P/Invoke)
    C#多屏时控制窗体显示在哪个显示器上
    c# Winform 开发分屏显示应用程序
  • 原文地址:https://www.cnblogs.com/denggelin/p/6552704.html
Copyright © 2020-2023  润新知