牛客网测试题--小a和黄金街道
生活随笔
收集整理的這篇文章主要介紹了
牛客网测试题--小a和黄金街道
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
小a和小b來到了一條布滿了黃金的街道上。它們想要帶幾塊黃金回去,然而這里的城管擔心他們拿走的太多,于是要求小a和小b通過做一個游戲來決定最后得到的黃金的數量。
游戲規則是這樣的:
假設道路長度為米(左端點為,右端點為),同時給出一個數(下面會提到的用法)
設小a初始時的黃金數量為,小b初始時的黃金數量為
小a從出發走向,小b從出發走向,兩人的速度均為
假設某一時刻(必須為整數)小a的位置為,小b的位置為,若且,那么小a的黃金數量會變為,小b的黃金數量會變為
當小a到達時游戲結束
小a想知道在游戲結束時的值
答案對取模
?
package test1;import java.math.BigInteger;import java.util.Scanner;public class Main5{static final long mod = (long) (1e9+7);public static long phi(long n){long ans = n,temp=n;for(int i=2;i*i<=temp;i++){if(temp%i==0){ans-=ans/i;while(temp%i==0)temp/=i;}}if(temp>1)ans-=ans/temp;return ans;}public static long mod_pow(long x,long n,long mod) {long ans =1;while(n>0){if(n%2==1)ans=ans*x%mod;x=x*x%mod;n/=2;}return ans;}public static void gcd(long a,long b){}public static void main(String[] args) {Scanner sc =new Scanner(System.in);while(sc.hasNext()){long n = sc.nextLong();long k = sc.nextLong();long a = sc.nextLong();long b = sc.nextLong();long c = a+b;long res= 0,ans;res=phi(n)*n/2;ans = mod_pow(k, res, mod)*c%mod;System.out.println(ans);}}} //歐拉函數就是求所有小于n的與n互質的數的個數和 //n * phi(n)/2就等于所有小于n的與n互質的數字的和?
轉載于:https://www.cnblogs.com/ls-pankong/p/10316248.html
總結
以上是生活随笔為你收集整理的牛客网测试题--小a和黄金街道的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python自学笔记之开源小工具:San
- 下一篇: auth 认证组件的补充