判断奇偶性 大数(高精度)
任何问题都是有来源的,话不多说直接上题!
一看这个数据范围提示,就可以立马意识到 要用高精度的方法来处理数据。
浅谈高精度:
当一个数据太大的时候(超过unsigned long long),普通的方式储存已经是行不通了(内存会爆掉,代码运行不起来)。那我们就要换一种储存数据的方式——》数组 ,将数据按高权位到低权位放到数组里面(反过来也可以,有点像大小端,就看你怎么样处理了)。
举个例子:1234567891000000这个数据,在数组里是这样的 1 2 3 4 5 6 7 8 9 1 0 0 0 0 0 0。因为是大数,单个数据位数可能会很多(像题目1e1000000),这就要求我们数组尽量要开大一点。
该题的代码:
#include<stdio.h>
#include<string.h>
int main()
{int flag = 0;char a[1000100] = { 0 };int i;scanf("%s", a, 1000100);int t = strlen(a);for (i = 0; i < t; i++){a[i] -= 48;}for (i = 0; i < t; i++)//核心{if (a[i] % 2 == 0)continue;if (a[i] % 2 != 0 && i != t - 1)a[i + 1] += (a[i]%2) * 10;if (a[i] % 2 != 0 && i == t - 1)flag = 1;}if (flag == 0)printf("even number\n");elseprintf("odd number\n");return 0;
}
以下是代码的解释部分:
1.用字符串可以很好的将数据一次性放到数组里(当然如果你愿意,循环 一个一个放也是没有问题的,只是太慢了,狗头保命)。ps:scanf("%s", a, 1000100) 中的“ ,100010”是安全写法,为了不让vs19报警告。
2.数组开到100010是为了更加保险(一般情况下,数组开大一点 会好一点,可以避免一些错误)。
3.a[i] -= 48 为什么要-48? 原因:因为我是%s输入的,数组里面确实存的是ASCII码值。举个例子'1'--->49(ASCII) 。 所以-48才算是真正无误的将数据存储。
代码核心部分解释(具体代码请看上述代码段“//核心”):
给大家提供一个简单又容易理解的方法——》除法(列竖式)
举2个例子:
重点解释一下if (a[i] % 2 != 0 && i != t - 1)
a[i + 1] += (a[i] % 2) * 10;
这个*10,是当执行位未被2整除而进行的(比如说,214这个数,列竖式到14的时候,这是的1不够2整除,所以下一次执行应该是1*10+4 , 14这个数字;当然如果是09的时候,下一次执行位0*10+9)。
这个 i != t - 1 是保证除法(列竖式)的正常逻辑执行,当是最后一位数字时(个位,或者说权重最低的数字)就无需执行*10这个步骤了。
这个 if (a[i] % 2 != 0 && i == t - 1)
flag = 1;
对于整数,我们判断奇偶就是看它是否可以被2整除(整除为偶,反之为奇),通过除法(列竖式)我们发现当最后一次执行的时候,如果可以被2整除 那么它就为偶,反之为奇。(还是上面的例子 214 最后执行的数字为14,14可以被2整除,所以214为偶数;213最后执行数字为13,,1不可以被2整除,所以213是奇数 )。
再最后,感谢老铁们的阅读!
同时也希望老铁们多多点赞与评论,本人非常希望收到大家的建议与纠错!
ps:本人后续会发表更多高精度问题(大数 的加法 减法 乘法 除法等等),有兴趣的老铁可以关注我一下,谢谢啦!
判断奇偶性 大数(高精度)相关推荐
- 大数高精度加减、乘除、开根(C++版全套最详细、最易懂)
大数高精度加减.乘除.开根 一.前面铺垫 二.加法 三.减法 四.乘法 五.除法 六.开根(待完善) 大数高精度加减乘除主要用在超过long型的数字计算(比如1000位数), 最基本的思路就是换成 ...
- XDOJ例题及答案第八更 密码编译 密码强度 排序2 排序3 排序算法比较器 判断奇偶性 平均数 气温波动 亲和数 求交错序列前N项和 求平均值求奇数的和
目录 密码编译 密码强度 排序2 排序3 排序算法比较器 判断奇偶性 平均数 气温波动 亲和数 求交错序列前N项和 求平均值 求奇数的和 密码编译 #include<stdio.h> in ...
- (函数题)4-12 判断奇偶性
4-12 判断奇偶性 本题要求实现判断给定整数奇偶性的函数. 函数接口定义: int even( int n ); 其中n是用户传入的整型参数.当n为偶数时,函数返回1:n为奇数时返回0.注意:0是偶 ...
- C语言 定义函数妇女 判定整数n,C语言 定义函数判断奇偶性
问题描述: C语言 定义函数判断奇偶性 这学期新开C语言,自己对这门课比较感兴趣,所以预习了一些没学的东西. 然后看到这道题: 编程c语言输入一批正整数以0或负数为结束标志求奇数的和要求定义和调用函数 ...
- C# 判断给定大数是否为质数,目标以快速度得到正确的计算结果。
标题是一个测试题.在看到这道题的时候,第一反应这是一道考程序复杂度的题,其次再是算法问题. 我们先来看看质数的规则: Link:http://en.wikipedia.org/wiki/Prime_n ...
- 位运算实例(一):判断奇偶性
同样一个问题,位运算可以提高程序的运行效率. 下面讲一下关于奇偶性的判断. 常规方法 public static boolean isOdd(int i){ return i % 2 != 0; } ...
- ln函数怎么看奇偶性_判断奇偶性解析函数:f(x)=ln(x+根 – 手机爱问
2009-01-10 急急急三角函数奇偶性三角函数奇偶 f(x)=sin(πx-0.5π)-1=-sin(0.5π-πx)-1=-cosπx-1,f(-x)=-cos(-πx)-1==-cosπx-1 ...
- 怎么用PHP判定奇偶性,函数如何判断奇偶性,一起来学学吧!
定义:如果对于函数f(x)的定义域内任意一个x,都有f(-x)=f(x),那么函数f(x)就叫做偶函数;如果都有f(-x)=-f(x),那么函数f(x)就叫做奇函数. 一.奇偶函数的前提条件 从定义中 ...
- python❀判断奇偶性
#判断一个数的奇偶性 num=int(input("请输入一个数:")) if num%2 == 0 :print(f" {num} 就是偶数") else:p ...
最新文章
- C#时间(DateTime)格式化
- WebApi的安全性及其解决方案
- 面试题-两个数值交换
- UA MATH523A 实分析1 集合论基础6 一些点集拓扑基本概念
- 单例模式——懒汉模式(C++)
- Hibernate优化策略
- java命令_JAVA与模式之命令模式
- [第二篇]如何在ASP.Net Core的生产环境中使用OAuth保护swagger ui
- JavaFX UI控件教程(六)之Toggle Button
- c语言列车调度 栈,这个用栈调度火车的程序到底是怎么回事?
- linux服务器_Linux 服务器为什么被黑?
- Linux:Linux常用网络指令
- 计算机专业专硕考研数学考一还是二,计算机专业考研数学考一还是二
- Linux变量的定义、赋值、查看、删除(export、echo、unset)
- 告诉你Windows PE 是什么东东?详细介绍一下winpe
- Fluent NHibernate入门
- mysql 校对规则作用_讲讲Mysql中的校对规则究竟是怎么一回事
- android模拟器启动boss,传说之下boss模拟器无敌版
- 2、二叉树的后序遍历
- DVWA靶场联系(第三周)
热门文章
- C语言,利用求余运算拆分三位数的个,十,百位数字,并求和
- Promise.all 处理error
- Quartz.NET常用方法 01
- C#LeetCode刷题之#203-删除链表中的节点(Remove Linked List Elements)
- 经过这几年的磨练_通过构建这15个项目来磨练您JavaScript技能
- python 删除尾部0_python之List常见操作
- 教你使用Python实现新个税计算器
- 618购物节要到了,Python帮你实现商品有货的微信提醒
- 一篇文章解决Python函数式编程与闭包的问题
- Python网络编程——使用TCP方式传输文件