• 九度OJ 1085:求root(N, k) (迭代)


    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:1407

    解决:523

    题目描述:

        N<k时,root(N,k) = N,否则,root(N,k) = root(N',k)。N'为N的k进制表示的各位数字之和。输入x,y,k,输出root(x^y,k)的值 (这里^为乘方,不是异或),2=<k<=16,0<x,y<2000000000,有一半的测试点里 x^y 会溢出int的范围(>=2000000000) 

    输入:

        每组测试数据包括一行,x(0<x<2000000000), y(0<y<2000000000), k(2<=k<=16)

    输出:

        输入可能有多组数据,对于每一组数据,root(x^y, k)的值

    样例输入:
    4 4 10
    样例输出:
    4
    来源:
    2010年清华大学计算机研究生机试真题


    思路:

    计算复杂度是O(n)的,如果是n2就会超时。

    另外注意用long long,int可能不够。


    代码:

    #include <stdio.h>
     
    long long root(long long x, int y, int n)
    {
        long long a = 1;
        while (y)
        {
            if (y&1)
                a = (a*x)%n;
            x = (x*x)%n;
            y >>= 1;
        }
        if (a == 0)
            a = n;
        return a;
    }
     
    int main(void)
    {
        int x, y, k;
     
        while (scanf("%d%d%d", &x, &y, &k) != EOF)
        {
            printf("%lld
    ", root((long long)x, y, k-1));
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1085
        User: liangrx06
        Language: C
        Result: Accepted
        Time:10 ms
        Memory:912 kb
    ****************************************************************/



    编程算法爱好者。
  • 相关阅读:
    python中获取今天昨天和明天的日期
    Redis安装系统服务1073错误
    npm 安装删除模块
    git 远程服务器创建项目自动化部署、克隆推送免密码
    A20地址线科普【转载】
    fork 与 vfork
    /bin /usr/bin /sbin /usr/sbin 目录的作用
    Coreutils
    VMware 设置支持UEFI
    npm 发布包
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083947.html
Copyright © 2020-2023  润新知