Trailing Zeroes (II) LightOJ - 1090

傳送門

首先這個題的意思是給你四個數字,讓你找出這四個數字按照規則組合在一起得到的數字的後綴0的個數

前兩個數字爲組合數,後面兩個爲指數然後再相乘

我們的目的是得到後綴0的位數,而後綴0則取決於分解因子後5的個數和2的個數,所以我們只需要統計這兩個數字的個數取最小即可

AC代碼:

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long LL;
signed main() {
	int t;
	cin>>t;
	for(int i=1; i<=t; i++) {
		int n,r,p,q;
		cin>>n>>r>>p>>q;
		int two=0,five=0;
		while(p%2==0)	p/=2,two++;
		while(p%5==0)	five++, p/=5;
		two*=q,five*=q;
		int k=n;
		while(k)	k/=5, five+=k;
		k=n;
		while(k)	k/=2,two+=k;
		k=n-r;
		while(k)	k/=5, five-=k;
		k=n-r;
		while(k)	k/=2, two-=k;
		k=r;
		while(k)	k/=5, five-=k;
		k=r;
		while(k)	k/=2, two-=k;
		printf("Case %d: ",i);
		cout<<min(two,five)<<'\n';
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章