【C++题解】双数与单数

P a r t Part Part 1 1 1 读题

题目描述

下头男 w h y why why听那惨无人道的幼儿园老师 w g y wgy wgy搞了一个有 N N N( 1 ≤ N ≤ 100 1≤N≤100 1N100)个正整数 a a a( 1 ≤ a ≤ 1 0 60 1≤a≤10^{60} 1a1060) 的表,叫下头男 w h y why why去判断“奇偶性”(这个词语意思向幼儿园的小朋友们解释,就是“这个数是单数,还是双数啊?”)。

下头男 w h y why why被那个表的长度深深震惊到了,竟然给幼儿园的小朋友做这么多道题!!!毕竟他才刚刚学会数数啊。

写一个程序读入 N N N个整数,如果是双数,那么在独立的一行内输出" e v e n even even",如果是单数则类似地输出" o d d odd odd"。

输入格式

第一行: 一个单独的整数 N N N

2 2 2到第 N + 1 N+1 N+1行:第 j + 1 j+1 j+1行有第 j j j个需要判断奇偶性的整数。

输出格式

1 1 1 N N N行::第 j j j行根据第 j j j个整数的奇偶性输出一个单词" e v e n even even"或者" o d d odd odd"

输入样例1

2
1024
5931

输出样例1

even
odd

输入样例2

2
65465415565674566575
44275155144865452678

输出样例2

odd
even

数据范围与提示

对于 50 % 50\% 50%的数据 : 1 ≤ a ≤ 2147483647 1≤a≤2147483647 1a2147483647

对于 100 % 100\% 100%的数据 : 1 ≤ a ≤ 1 0 60 1≤a≤10^{60} 1a1060

P a r t Part Part 2 2 2 思路

本题看似简单,对于前 50 % 50\% 50%的数据,直接模 2 2 2,判断余数就可以了,但是对于后 50 % 50\% 50%的数据,就算开到 u n s i g n e d unsigned unsigned l o n g long long l o n g long long也最多达到 19 19 19位,而本题要求 60 60 60位,不能采用直接输入的思路,所以我们想到了:高精度算法

温馨提示:博主也不太清楚高精度算法,大家可以自行搜索(如果实在找不到,我在评论区发一个博主的讲解)

首先请大家回忆,怎么判断单双数?直接判断最后一位能否被 2 2 2整除就行了,所以我们可以用字符串来存储这个数字,拉出最后一个数字判断就行了。

但是我们是用字符串来存储的,所以我们还需要看看这个字符在 A S C L L ASCLL ASCLL表(见下)中的对应值,在进行判断。
cmd-markdown-logo
该图片来自网络,侵权请联系我,马上删除!

我们发现, 0 0 0 2 2 2 4 4 4 6 6 6 8 8 8 A S C L L ASCLL ASCLL表中的对应值均为双数,而 1 1 1 3 3 3 5 5 5 7 7 7 9 9 9 A S C L L ASCLL ASCLL表中的对应值均为单数,与之前的判断最后一位的方法完全一致,那我们可以直接判断即可。

注意!!!本题有多组测试数据,需要一个 f o r for for循环!!!

小tip:大家可以先根据思路,写一下代码哦!

P a r t Part Part 3 3 3 代码

#include<bits/stdc++.h>
using namespace std;
int n;
string a;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a;
		int m=a.size();//求字符串的长度,也可以用.length()
		//总长-1就是最后一位,对此进行判断即可
		if(a[m-1]%2==0)cout<<"even"<<endl;
		else cout<<"odd"<<endl;
	}
	return 0;
}

听完后,是不是觉得很简单呢?赶快自己去试一下吧!!!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值