import java.util.Scanner; public class TestWeng { public static void main(String[] args) { // TODO 自动生成的方法存根 /* 对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。 对于一个整数,从个位开始对每一位数字编号,个位是1号, 十位是2号,以此类推。这个整数在第n位上的数字记作x, 如果x和n的奇偶性相同,则记下一个1,否则记下一个0。 按照整数的顺序把对应位的表示奇偶性的0和1都记录下来, 654321 654321 就形成了一个二进制数字。比如,对于342315, 342315 562123 这个二进制数字就是001101。*/ // 001101 001111 /* 你的程序要读入一个非负整数,整数的范围是[0,100000], 然后按照上述算法计算出表示奇偶性的那个二进制数字, 输出它对应的十进制值。*/ /*输入格式: 一个非负整数,整数的范围是[0,1000000]。 输出格式: 一个整数,表示计算结果。 输入样例: 342315 输出样例: 13*/ // 奇偶性相同的两个数的和一定是偶数 // 奇偶性不同的两个数的和一定是奇数 Scanner in = new Scanner(System.in); // byte a = 0b1010; // System.out.println(a); int input = in.nextInt(); int count = 0; int a = 0; int b = 0; int all = 0; int all10 = 0; int i = 0; int no = 0; int allAll = 0; // String twoT = Integer.toBinaryString(two); // String a = (Integer.toBinaryString(two)); if(input>=0&&input<=1000000){ do { i = input%10; count += 1; input = input/10; if((i%2)!=0&&(count%2)!=0 ||(i%2)==0&&(count%2)==0) { a = count; }else { b = count; } if(a>b) { all += (int)Math.pow(2,(a-1)); all10 += (int)Math.pow(10,(a-1)); } // all10 += (int)Math.pow(10,(a-1)); // all10 = (int) (all10+Math.pow(10,(a-1))); //// all__ = // System.out.println("all10"+all10); // no += (int) (Math.pow(10,(b-1))); // allAll = all10-no; // System.out.println("allAll:"+allAll); // System.out.println("no"+no); // System.out.println("成立a:"+a+" "+"不成立b"+b); // System.out.println("input"+input); // System.out.println((int)(i%2)+" --- "+(int)(count%2)); // System.out.println("z1:"+two+" "+"count"+count); // System.out.println("twoT"+twoT); }while(input!=0); // System.out.print("twoT"+twoT); } // System.out.println(a+"--"+b); //把数值all转换为10进制 现有位数规则count. System.out.println("十进制"+all); System.out.println("二进制"+all10); } }
public class O { public static void main(String[] args) { // TODO 自动生成的方法存根 int sum = 0; int number = 999; int c; int a; int b = 0; int sum1 =0; if (number>=0&&number<=1000000) { do { // c=number/10; a=number%10; b=b+1; // 第几位 if(a%2==b%2){ sum=(int) (sum+Math.pow(2, b-1)); sum1=(int) (sum1+Math.pow(10, b-1)); } number=number/10; } while (number!=0); } System.out.println("十进制"+sum); System.out.println("二进制"+sum1); } }
import java.util.Scanner; public class Main { public static void main(String []args) { Scanner in = new Scanner(System.in); int x=in.nextInt(),i=0,sum=0; do { if(((x%10)+i+1)%2==0)sum+=Math.pow(2,i); // x=x/10; i++; }while(x>0); System.out.print(sum); } }
将编程看作是一门艺术,而不单单是个技术。 敲打的英文字符是我的黑白琴键, 思维图纸画出的是我编写的五线谱。 当美妙的华章响起,现实通往二进制的大门即将被打开。