列表

详情


NC25995. 砝码和天平

描述

现在有很多砝码,质量为w的0次方、1次方……n次方,每个砝码都只有一个。还有一个天平,可以在两端放置砝码和重物。现在要用这些砝码搭配出相等于重物的质量m,也可以把若干个砝码和重物一起放在天平的一侧,来平衡这个天平。

输入描述

第一行为一个整数T,代表有T组数据

接下来T行,每行有两个整数w,m (2 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9)。

输出描述

如果能,输出YES,否则输出NO。

示例1

输入:

2
3 7  
4 22

输出:

YES
NO

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++ 11.0.1) 解法, 执行用时: 4ms, 内存消耗: 508K, 提交时间: 2023-04-02 20:11:21

#include<bits/stdc++.h>
using namespace std;
int main(){
	int w,m,t;
	cin>>t;
	while(t--){
		cin>>w>>m;
		int flag=0;
		while(m){
			if((m-1)%w==0) m--;
			else if((m+1)%w==0) m++;
			else if(m%w){
				puts("NO");
				flag=1;
				break;
			}
			m/=w;
		}
		if(flag==0){
			puts("YES");
		}
	}
	return 0;
}

C++14(g++5.4) 解法, 执行用时: 6ms, 内存消耗: 628K, 提交时间: 2019-06-07 13:12:33

#include<iostream>
using namespace std;
int main(){
	int t,w,m;
	cin>>t;
	while(t--){
		int flag=1;
		cin>>w>>m;
		while(m){
			if(m%w==0||m%w==1)
				m/=w;
			else if(m%w==w-1)
				m=(m+1)/w;
			else{
				flag=0;
				break;
			}
		}
		if(flag)
			cout<<"YES\n";
		else
			cout<<"NO\n";
	}
	return 0;
}

上一题