关闭

cf 数制转换 C. Vanya and Scales

标签: 数论
246人阅读 评论(0) 收藏 举报
分类:

题目链接

http://codeforces.com/problemset/problem/552/C

题意:

利用已知的w0, w1, w2, ..., w100

这101个砝码,用天平算出m的质量

思路:

根据给的砝码,我们可以想到利用w进制来表示这些砝码,那么每个砝码的大小就是1,10,100.......

然后要计算出m的质量,我们将m也表示为w进制的数

然后对于每位数我们进行分析

每个砝码存在三种情况不取,取,减去(*0,*1,*-1)

因为砝码的为1,10,100,1000,,,,

m的第i位数,如果是0,1,那么第i个砝码可以选择不取,和取

如果是w-1,那么就加上第i个砝码使这位数为0,同时下一位数要+1

如果是w,那么就下一位数+1

最后如果每位数都满足条件则可以算出m的质量

下面是代码:

</pre><pre name="code" class="cpp">#include <algorithm>
#include <cstdio>
#include <iostream>
#define MAX 105
int mp[MAX];
using namespace std;
int main(void)
{
	int w,m,p;cin >> w >> m;
	int ans = 0,flag = 1;
	while(m){
		mp[++ans]=m%w;
		m/=w;
	}
	for(int i = 1;i<=ans;i++){
		if(mp[i]==0 || mp[i]==1)continue;
		if(mp[i]==w-1 || mp[i]==w){mp[i+1]++;continue;}
		else{
			flag = 0;
			break;
		}
	}
	if(flag)cout << "YES";
	else cout << "NO";
}






0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16972次
    • 积分:886
    • 等级:
    • 排名:千里之外
    • 原创:75篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    最新评论