• TOJ4757: 12345(数学)


    传送门

    时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte

    描述

    为了说明水题也不是那么好AC的,FD出了一个由数字1~5组成的题目,题意如下:

    给定一个正整数n,求(1^n+2^n+3^n+4^n) mod 5的值。

    其中:

    (1)x^n:表示x的n次方;

    (2)a mod b:表示a除以b的余数。

    输入

    输入数据有多组,每组占一行,每行一个正整数n(1 <= n <= 10100000)。

    输出

    每组输出占一行,每行一个整数,表示(1^n+2^n+3^n+4^n) mod 5的结果。

    样例输入

    4
    124356983594583453458888889

    样例输出

    4
    0

    思路:

    易知mod5等于几取决于(1^n+2^n+3^n+4^n)个位
    易知1^n个位为1,1,1,1……2^n个位为2,4,8,6……3^n个位为3,9,7,1……4^n个位为4,6,4,6……
    易知
    当n=4k时(1^n+2^n+3^n+4^n)个位既是1+6+1+6的个位为4,即此时原式对5取模等于4
    当n=4k+1时(1^n+2^n+3^n+4^n)个位既是1+2+3+4的个位为0,即此时原式对5取模等于0
    当n=4k+2时(1^n+2^n+3^n+4^n)个位既是1+4+9+6的个位为0,即此时原式对5取模等于0
    当n=4k+3或(n=4k-1)时(1^n+2^n+3^n+4^n)个位既是1+8+7+4的个位为0
    所以本题只需要判断最后两位是否为4的倍数即可
    如果是 则输出4 不是则为0 以上。

    代码也很简单:

    #include<cstdio> 
    #include<string>
    #include<iostream>
    using namespace std;
    int main(){
        string s;
        while(cin>>s)
        {
            int num=s.size()>1?(s[s.size()-1]-'0'+(s[s.size()-2]-'0')*10):(s[s.size()-1]-'0');
            printf(num%4?"0
    ":"4
    ");
        }
    }
  • 相关阅读:
    Linux C/C++ 利用scandir和alphasort遍历目录文件并排序
    C++11 多线程之互斥量、条件变量、call_once使用简介
    Win8 ApplicationModel Angkor:
    WinJS.Binding Angkor:
    WinJS.UI.Animation Angkor:
    WinJS.Class Angkor:
    WinJS.Application Angkor:
    WinJS.Promise Angkor:
    Rocket core ctrl_stalld和ctrl_killd
    Rocket core pipeline和replay
  • 原文地址:https://www.cnblogs.com/Esquecer/p/8677483.html
Copyright © 2020-2023  润新知