任何问题都是有来源的,话不多说直接上题!

一看这个数据范围提示,就可以立马意识到 要用高精度的方法来处理数据。

浅谈高精度:

当一个数据太大的时候(超过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:本人后续会发表更多高精度问题(大数 的加法 减法 乘法 除法等等),有兴趣的老铁可以关注我一下,谢谢啦!

判断奇偶性 大数(高精度)相关推荐

  1. 大数高精度加减、乘除、开根(C++版全套最详细、最易懂)

    大数高精度加减.乘除.开根 一.前面铺垫 二.加法 三.减法 四.乘法 五.除法 六.开根(待完善)   大数高精度加减乘除主要用在超过long型的数字计算(比如1000位数), 最基本的思路就是换成 ...

  2. XDOJ例题及答案第八更 密码编译 密码强度 排序2 排序3 排序算法比较器 判断奇偶性 平均数 气温波动 亲和数 求交错序列前N项和 求平均值求奇数的和

    目录 密码编译 密码强度 排序2 排序3 排序算法比较器 判断奇偶性 平均数 气温波动 亲和数 求交错序列前N项和 求平均值 求奇数的和 密码编译 #include<stdio.h> in ...

  3. (函数题)4-12 判断奇偶性

    4-12 判断奇偶性 本题要求实现判断给定整数奇偶性的函数. 函数接口定义: int even( int n ); 其中n是用户传入的整型参数.当n为偶数时,函数返回1:n为奇数时返回0.注意:0是偶 ...

  4. C语言 定义函数妇女 判定整数n,C语言 定义函数判断奇偶性

    问题描述: C语言 定义函数判断奇偶性 这学期新开C语言,自己对这门课比较感兴趣,所以预习了一些没学的东西. 然后看到这道题: 编程c语言输入一批正整数以0或负数为结束标志求奇数的和要求定义和调用函数 ...

  5. C# 判断给定大数是否为质数,目标以快速度得到正确的计算结果。

    标题是一个测试题.在看到这道题的时候,第一反应这是一道考程序复杂度的题,其次再是算法问题. 我们先来看看质数的规则: Link:http://en.wikipedia.org/wiki/Prime_n ...

  6. 位运算实例(一):判断奇偶性

    同样一个问题,位运算可以提高程序的运行效率. 下面讲一下关于奇偶性的判断. 常规方法 public static boolean isOdd(int i){ return i % 2 != 0; } ...

  7. 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 ...

  8. 怎么用PHP判定奇偶性,函数如何判断奇偶性,一起来学学吧!

    定义:如果对于函数f(x)的定义域内任意一个x,都有f(-x)=f(x),那么函数f(x)就叫做偶函数;如果都有f(-x)=-f(x),那么函数f(x)就叫做奇函数. 一.奇偶函数的前提条件 从定义中 ...

  9. python❀判断奇偶性

    #判断一个数的奇偶性 num=int(input("请输入一个数:")) if num%2 == 0 :print(f" {num} 就是偶数") else:p ...

最新文章

  1. C#时间(DateTime)格式化
  2. WebApi的安全性及其解决方案
  3. 面试题-两个数值交换
  4. UA MATH523A 实分析1 集合论基础6 一些点集拓扑基本概念
  5. 单例模式——懒汉模式(C++)
  6. Hibernate优化策略
  7. java命令_JAVA与模式之命令模式
  8. [第二篇]如何在ASP.Net Core的生产环境中使用OAuth保护swagger ui
  9. JavaFX UI控件教程(六)之Toggle Button
  10. c语言列车调度 栈,这个用栈调度火车的程序到底是怎么回事?
  11. linux服务器_Linux 服务器为什么被黑?
  12. Linux:Linux常用网络指令
  13. 计算机专业专硕考研数学考一还是二,计算机专业考研数学考一还是二
  14. Linux变量的定义、赋值、查看、删除(export、echo、unset)
  15. 告诉你Windows PE 是什么东东?详细介绍一下winpe
  16. Fluent NHibernate入门
  17. mysql 校对规则作用_讲讲Mysql中的校对规则究竟是怎么一回事
  18. android模拟器启动boss,传说之下boss模拟器无敌版
  19. 2、二叉树的后序遍历
  20. DVWA靶场联系(第三周)

热门文章

  1. C语言,利用求余运算拆分三位数的个,十,百位数字,并求和
  2. Promise.all 处理error
  3. Quartz.NET常用方法 01
  4. C#LeetCode刷题之#203-删除链表中的节点(Remove Linked List Elements)
  5. 经过这几年的磨练_通过构建这15个项目来磨练您JavaScript技能
  6. python 删除尾部0_python之List常见操作
  7. 教你使用Python实现新个税计算器
  8. 618购物节要到了,Python帮你实现商品有货的微信提醒
  9. 一篇文章解决Python函数式编程与闭包的问题
  10. Python网络编程——使用TCP方式传输文件