1. 程式人生 > >牛客網———求root(N,k)

牛客網———求root(N,k)

題目描述

    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)的值
示例1

輸入

4 4 10

輸出

4
連結:https://www.nowcoder.com/questionTerminal/9324a1458c564c4b9c4bfc3867a2aa66
來源:牛客網

#include <stdio.h>
int main(){
    for(long x,y,k,r;~scanf("%ld%ld%ld",&x,&y,&k);){
        for
(r=1,k-=1;y;r=(y&1?r*x%k:r),x=x*x%k,y>>=1); printf("%ld\n",r?r:k); } return 0; }