NYOJ--408題Board Game Dice

這題剛開始看的時候甚是頭暈,但是後來看到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;
}

代碼還是一如既往的亂······唉,看來自己以後寫代碼的時候還是需要多注意啊······

發佈了53 篇原創文章 · 獲贊 94 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章