现在的位置: 首页 > 综合 > 正文

Code[vs] 2145 判断奇偶性

2018年04月28日 ⁄ 综合 ⁄ 共 968字 ⁄ 字号 评论关闭

2145 判断奇偶性

 时间限制: 1 s
 空间限制: 1000 KB
 题目等级 : 青铜 Bronze

题目描述 Description

判断函数y=x^n次方的奇偶性若是奇函数就输出ji,偶函数输出ou

输入描述 Input Description

一行输入n

输出描述 Output Description

一行,输出答案

样例输入 Sample Input

2

样例输出 Sample Output

ou

数据范围及提示 Data Size & Hint

n为正整数,挺大,这次真的大了

解题思路:

其实判断奇偶性的题目,我们在很多题中都见过,无疑是用x%2==1 or x%2==0 来判断,但是对于超过int 甚至long long 的数字或者是有时间限制的题目来说,我们这样做肯定是行不通的,那么,就得使用一些技巧,把其间不必要的计算过程和容易产生错误的计算过程尽量的避免掉,那么我们才能得到正确的结果。

这道题用到的最为普遍的思想就是说,一个数无论他多大,那么我们只用判断他的最后一位是奇数还是偶数就可以了,那么我们把这个数字存放在一个char数组里,然后将最后一位转化成为整数,s[len-1]-'0',通过对这个数字的奇偶性进行判断就可以了~

代码:

# include<cstdio>
# include<iostream>
# include<cstring>

using namespace std;

char s[10000];

int main(void)
{
    cin>>s;
    int len = strlen(s);
    if ( (s[len-1]-'0')%2==1 )
    {
        cout<<"ji"<<endl;
    }
    else
    {
        cout<<"ou"<<endl;
    }



    return 0;
}

PS:其他同样可以用来判断奇偶数的方法如下:

if( x&1 == 1 )

cout<<"ji"<<endl;

else

cout<<"ou"<<endl;

我们知道计算机中的数字通常用二进制补码表示。

如果为正数,补码与原码相同,直接看最后一位(因为数字1的前面N位均为0,跟它做与运算,前面肯定为0),奇数为1,偶数为0,与1相与,结果不变。

如果为负数,补码转原码:保持符号位不动,其它各位取反+1,即为负数的绝对值原码全部取反+1。还是看最后1位,先取反,再+1,结果还是和原来相同。进行与运算时还是原来的末位,所以用跟1做与运算还是保持原来的结果。

抱歉!评论已关闭.