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 1≤N≤100)个正整数 a a a( 1 ≤ a ≤ 1 0 60 1≤a≤10^{60} 1≤a≤1060) 的表,叫下头男 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 1≤a≤2147483647;
对于 100 % 100\% 100%的数据 : 1 ≤ a ≤ 1 0 60 1≤a≤10^{60} 1≤a≤1060;
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表(见下)中的对应值,在进行判断。
该图片来自网络,侵权请联系我,马上删除!
我们发现, 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;
}
听完后,是不是觉得很简单呢?赶快自己去试一下吧!!!