翁恺老师C语言入门第三周编程题之《数字特征值》-程序员宅基地

技术标签: c/c++  

题目内容:

对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是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],然后按照上述算法计算出表示奇偶性的那个二进制数字,输出它对应的十进制值。

输入格式:

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

输出格式:

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

输入样例:

342315

输出样例:

13

本人的满分通过答案,写在此方便以后查看

#include <stdio.h>
#include <math.h>
int main(){
    int num;
    int count=0;
    int a=0;
    int dig=0;
    scanf("%d",&num);
    do{
        count ++;
        a=num%10;
        if((a+count)%2==0){
            dig=dig+pow(2,count-1);
        }
        num /=10;
    }while(num>0);
    printf("%d",dig);
    return 0;
}

PS:数字奇偶和数位奇偶比较异同,等价于求两数之和是否为偶数。

这是我独自误打误撞想到的,以为别人都是这么想,后来翻看讨论区,发现不少人是先两个数都单一判断,最后再来个综合判断,那样挺麻烦的。而且网友ikeltis早于我想到此思路,发到谈论区还受到了翁老师的微博表扬,想到自己也是独立思考想到的此法子,莫名的感到了一些鼓舞,哈哈,留此文纪念下。

附上网友ikeltis的代码(未征得同意,见谅)
/*
*思路:数字奇偶和数位奇偶相同时记为1,等价于数字与数位之和为偶数时记为1 *不知道 C 语言的指数怎么求,就用 h 做了累乘 */ #include<stdio.h> int main() { int n=1; int h=1; int num; int flag=0; scanf("%d",&num); while(num != 0) { if((num+n)%2==0) { flag = flag + h; } n++; num = num / 10;//删去最后一位数 h=h*2; } printf("%d\n",flag); return 0; }

 

转载于:https://www.cnblogs.com/berryfad/p/4187918.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30411239/article/details/99895621

智能推荐

数组对象去重!必备_菜菜小咕咚的博客-程序员宅基地

文章浏览阅读193次。今天在写项目:遇到,当前类型等于接口里的某个类型时,就把所对应的类型的序号和id加入进数组中去。每点击一次类型,然后导致重复了。ctrlC和ctrlV的我要把它记录多看看。一、方法1利用对象访问属性的方法,判断对象中是否存在key var arr = [{ did: '01', value: '001' }, { did: '02', value: '002' }, { did: '01', value: '001' }];.

一些几何算法-程序员宅基地

文章浏览阅读1.3k次。目录 ㈠ 点的基本运算 1. 平面上两点之间距离 1 2. 判断两点是否重合 1 3. 矢量叉乘 1 4. 矢量点乘 2 5. 判断点是否在线段上 2 6. 求一点饶某点旋转后的坐标 2 7. 求矢量夹角 2 ㈡ 线段及直线的基本运算 1. 点与线段的关系 3 2. 求点到线段所在直线垂线的垂足 4 3. 点到线段的最近点 4 4. 点到线段

第二次使用samba服务器时,得需要再次重启samba服务器(3)-程序员宅基地

文章浏览阅读6.5k次。今天遇到的一个问题: 上次配置完成samba服务器后,今天在想用samba服务器,发现从Windows访问Linux时,提示“没有网络服务”,这就让我陷入郁闷,以为上次配置好以后,下次使用时不需要什么设置啦~~,想想可能是因为可能没有开启网络服务的原因吧,然后下面重启网络服务,如下:[root@localhost wireshark软件包]# /etc/init.d/

Android 7.0 增加以太网设置DHCP和静态IP_csdn android7.0 以太网-程序员宅基地

文章浏览阅读4.2k次。Android 7.0 自带EthernetService,默认开机就会启动,默认ip获取方式是动态分配(DHCP),有时候公司路由器DNS设置有问题,导致无法上网(能ping通局域网,无法上外网),手动设置静态IP就派上用场了。废话不多说了,上图修改记录:alps/device/xxxxx/xxx6737t_35g_n/device.mkalps/fram_csdn android7.0 以太网

SPOJ COT2 Count on a treeII 树上莫队-程序员宅基地

文章浏览阅读275次。ProblemDescriptionYou are given a tree with N nodes.The tree nodes are numbered from 1 to N.Each node has an integer weight. We will ask you to perfrom the following operation:u v : ask for h..._树上莫队

初探docker,docker-compose_docker compose运行本地导入镜像_谢同学谢童鞋的博客-程序员宅基地

文章浏览阅读179次。1、docker 安装以及docker-compose 安装放在另外一篇单独讲。2、docker 常用命令***导入镜像:docker load < mysql.tar***导出镜像:docker save mysql:latest > mysql.tar***查看镜像:docker images***查看容器(在运行的):docker ps -a***删除容器(强制):docker rm -f 容器名/容器id***删除镜像:docker rmi 镜像名/镜像id_docker compose运行本地导入镜像

随便推点

视频采集 via DirectShow-程序员宅基地

文章浏览阅读454次。视频采集 via DirectShowDirectShow 简介DirectShow 采集视频采集流程图采集代码CVideoCap 类CVideoCap::_initCapDevice 函数CVideoCap::_buildCaptureGraph 函数CVideoCap::startPreview 函数CVideoCap::startRecord 函数CRecordSwitch 类CTransI...

easyui ajax提交表单,EasyUI Form表单提交-程序员宅基地

文章浏览阅读994次。转自:https://www.cnblogs.com/net5x/articles/4576926.htmlForm(表单)使用$.fn.form.defaults重写默认值对象form提供了各种方法来操作执行表单字段,比如:ajax提交, load, clear等等。当提交表单的时候可以调用validate方法检查表单是否有效。用法创建一个简单的HTML表单。构建一个包含id、action和me..._easyui form表单

解决cros跨域问题过滤器_cors过滤器效率太慢了-程序员宅基地

文章浏览阅读570次。解决跨域问题过滤器import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfigurationSource;import or_cors过滤器效率太慢了

MySQL必知必会08:聚合函数-分组统计_mysql 分组统计函数-程序员宅基地

文章浏览阅读2.4k次。阅读整理自《MySQL 必知必会》- 朱晓峰_mysql 分组统计函数

python 内存泄漏及gc模块的使用_gc object already tracked-程序员宅基地

文章浏览阅读903次。在 Python 中,为了解决内存泄漏问题,采用了对象引用计数,并基于引用计数实现自动垃圾回收。 因为 Python 有了自动垃圾回收功能,不少初学者就认为自己从此过上了好日子,不必再受内存泄漏的骚扰了。但如果查看一下 Python 文档对 __del__() 函数的描述,就知道好日子里也是有阴云的。下面摘抄一点文档内容: Some common situations that_gc object already tracked

2014 Multi-University Training Contest 3 简要题解 by——Fudan University_2014 多校 mart master-程序员宅基地

文章浏览阅读768次。1 Problem A. Endless Punishment1.1 超简要题解我们用0来代表白色,用1来代表黑色,考虑将状态加一维使之齐次,则每个状态可以视为一个n + 1维的向量。这样每一步对应的两种操作就可以用一个异或意义下矩阵来表示。注意到第一个子集一定包含1实质上是说明了矩阵一定可逆。这样我们就可以用类似 BSGS 的方法去做了。 2 Probl_2014 多校 mart master