zoukankan      html  css  js  c++  java
  • c语言实践 数字特征值

    这题的要求是这样的:

    这题我没做出来,我大概思路是这样的,根据输入的数字,把这个数字的每一位都分离出来,然后判断奇数还是偶数,再判断序是奇数还是偶数,最后两个奇偶性比较,输出1还是0,这个输出的1和0该怎么保存,以及最后怎么转化为十进制呢? 卡住了。

    2018.9.17更新

    最近又想了一下,做出来了。

    int main()
    {
        
    	int input = 0;//用户输入的数字
    	int digit = 0;//每次循环提取出的数字
    	int n = 1;//第几位数了
    	int sum = 0;//结果
    	int r = 1;//二进制位的权重
    	int c = 0;//对应的二进制字符
    
    	scanf_s("%d",&input);
    
    
    	while (input!=0)
    	{
    		//提取出最某位的数字
    		digit = input % 10;
    		
    		//奇数+奇数=偶数
    		//偶数+偶数=偶数
    		//奇数+偶数=奇数
    		//当数字和序号奇偶性相同的时候,它们的和一定是偶数,偶数一定能除开2
    		if ((digit + n) % 2 == 0)
    		{
    			c = 1;//生成对应的二进制数字
    		}
    		else
    		{
    			c = 0;//生成对应的二进制数字
    		}
    
    		//计算权重
    		r = r * 2;//每循环一次二进制数字的权重就是2的n次方
    
    		//修正权重,觉得这里的代码挺丑陋的,但是又不知道该怎么改。
    		if (n == 1)//当第一次循环的时候权重应该是1,但这里是2,所以修正一下权重的值。
    		{
    			r = 1;
    		}
    
    		//计算特征值
    		sum = sum + c * r;
    		
    		//准备提取下一个数字
    		n++;
    
    		//去掉个位之后形成的新数字
    		input = input / 10;
    
    	}
    
    	printf("%d",sum);
    	return 1;
    }
    

      

  • 相关阅读:
    BNUOJ 12756 Social Holidaying(二分匹配)
    HDU 1114 Piggy-Bank(完全背包)
    HDU 2844 Coins (多重背包)
    HDU 2602 Bone Collector(01背包)
    HDU 1171 Big Event in HDU(01背包)
    HDU 2571 命运 (入门dp)
    HDU 1069 Monkey and Banana(最长递减子序列)
    HDU 1160 FatMouse's Speed (最长上升子序列)
    HDU 2594 KMP
    POJ 3783 Balls --扔鸡蛋问题 经典DP
  • 原文地址:https://www.cnblogs.com/yfish/p/9621457.html
Copyright © 2011-2022 走看看