大数处理——判断奇偶
来源:互联网 发布:b2b平台数据 编辑:程序博客网 时间:2024/06/05 17:49
题目描述
Bessie那惨无人道的二年级老师搞了一个有 N (1 <= N <= 100) 个正整数 I (1 <= I <= 10^60) 的表叫Bessie去判断“奇偶性”(这个词语意思向二年级的学生解释,就是“这个数是单数,还是双数啊?”)。Bessie被那个表的长度深深地震精到了,竟然跟栋栋的泛做表格一样多道题!!!毕竟她才刚刚学会数数啊。
写一个程序读入N个整数,如果是双数,那么在独立的一行内输出"even",如果是单数则类似地输出"odd"
输入格式:
第一行: 一个单独的整数: N * 第2到第N+1行: 第j+1行有第j个需要判断奇偶性的整数。
输出格式:
第1..N行: 第j行根据第j个整数的奇偶性输出一个单词" even" 或者" odd"
样例输入:
2
1024
5931
样例输出:
even
odd
分析
这道题看似简单,判断奇偶性简单直接的办法就是用2来进行判断,如果除以2余数为0,那么就是偶数,否则为奇数。
本题的难点在于输入的正整数I的大小范围在1 <= I <= 10^60,10的60次方,从存储大小来看,byte-->KB-->MB-->GB-->TB,到达TB的时候,10的数量级也不过为12,所以输入的正整数不能够用常规的int整型或者数组进行存储(毕竟太大了,内存肯定不够)。
所以,再次从判断奇偶性的角度出发,我们其实只需要知道个位的数字,然后拿个位的数字进行判断奇偶就可以得到这个大数的奇偶性。因此,我们需要做的就是,忽略掉每一个输入的无用位数,直接获取有价值的个位,然后进行判断、输出。
有一个char转int的小技巧:
int = char - '0'
在下面的代码中,可以看到具体的使用方法。
代码
#include <stdio.h>int main(){ int n; scanf("%d",&n); char last = '\0'; int i; for(i=0;i<n;i++) { int num; getchar(); scanf("%c",&last); while(last != '\n') { num = last - '0'; scanf("%c",&last); } if(num%2==0) printf("even\n"); else printf("odd\n"); } return 0;}
- 大数处理——判断奇偶
- Java解惑系列——奇偶数判断
- 记录一个坑——判断奇偶数
- 奇偶判断
- 判断奇偶
- 判断奇偶
- 判断奇偶
- 判断奇偶
- 大数处理问题(—)(大数相加)
- java大数处理——转载
- 判断奇偶数
- 巧妙判断奇偶
- 奇偶数判断
- php 判断奇偶
- 奇偶判断的逆向
- 判断数值奇偶
- 判断奇偶数
- php判断奇偶数
- 第十二周项目2-(刑警的射击成绩)
- 第十二周项目三(1)——用递归方法求解
- 用数据说话,外贸产品选择(中篇)-google趋势分析法
- Gstreamer的音视频同步
- Android 控件属性详解
- 大数处理——判断奇偶
- Problem - 1004_Let the Balloon Rise
- RabbitMQ学习之集群部署
- Android学习笔记10——用户界面之Fragments(2)
- 分组分离正整数中的各位数
- struts2中url和action自动匹配的插件convention(约定)
- Android--Service之基础
- ProjectEuler - 10
- 第十二周项目三 求n以内奇数的阶乘