這題剛開始看的時候甚是頭暈,但是後來看到asas123的思路之後忽然發現這個題其實就是坑人的······就是算出一個x,使得M的x次方大於或者等於n;
思路很簡單,有for循環就可以得到得到答案,但是需要注意的就是題目中所給的那n,m,其實是有陷阱的,需要用long long 型。開始的時候我用的是int型的,結果最後輸出的時候每次都是錯誤,後來才忽然間想明白了。另外需要自己多留意的就是那個求最大公約數的模版,一直沒有接觸過,這是第一次接觸這個調用函數······其他的就沒什麼好說的了,老規矩,直接上代碼。
原題地址:點擊打開鏈接。
代碼如下:
#include<stdio.h>
long long gcd(long long a,long long b)//*這就是那個求最大公約數的函數。一個模版。*//
{
if(b==0)return a;
return gcd(b,a%b);
}
int main()
{ long long k,n,m,l;
int s,i,j;
scanf("%d",&s);
for(i=1;i<=s;i++)
{
l=1;
scanf("%lld %lld",&n,&m);
for(j=1;j<=200;j++)
{
l=l*m;
if(l>=n)
break;
}
l=l*j;
k=gcd(l,n);
l=l/k;n=n/k;
printf("Case %d: %lld/%lld\n",i,l,n);
}
return 0;
}
代碼還是一如既往的亂······唉,看來自己以後寫代碼的時候還是需要多注意啊······