Codeforces 552C Vanya and Scales(进制转换+思维)

题目链接:http://codeforces.com/problemset/problem/552/C

题目大意:
有101个砝码重量为w^0,w^1,....,w^100和一个重量为m的物体,问能否在天平两边放物品和砝码使其平衡。
解题思路:
将m化为w进制的数,接下来从低到高遍历没一位:
如果第i位是0那OK;
如果是1那就要把砝码wi放在天平另一边抵消;
如果是w-1那就要把砝码wi放到天平同一边,使其变为0并进位,这时第i+1位的权+1;
而如果是其他情况,那么肯定不能平衡了。

代码:

 1 #include<bits/stdc++.h>
 2 #define lc(a) (a<<1)
 3 #define rc(a) (a<<1|1)
 4 #define MID(a,b) ((a+b)>>1)
 5 #define fin(name)  freopen(name,"r",stdin)
 6 #define fout(name) freopen(name,"w",stdout)
 7 #define clr(arr,val) memset(arr,val,sizeof(arr))
 8 #define _for(i,start,end) for(int i=start;i<=end;i++)
 9 #define FAST_IO ios::sync_with_stdio(false);cin.tie(0);
10 using namespace std;
11 typedef long long LL;
12 const int N=5e6+5;
13 const int INF=0x3f3f3f3f;
14 const double eps=1e-10;
15
16 int a[105];
17
18 int main(){
19     FAST_IO;
20     int w,m;
21     cin>>w>>m;
22     int cnt=0;
23     while(m){
24         a[cnt++]=m%w;
25         m/=w;
26     }
27     bool flag=true;
28     for(int i=0;i<105;i++){
29         if(a[i]>=w){
30             a[i+1]+=a[i]/w;
31             a[i]%=w;
32         }
33         if(a[i]!=0){
34             if(a[i]==w-1)
35                 a[i+1]++;
36             else if(a[i]==1)
37                 ;
38             else{
39                 flag=false;
40                 break;
41             }
42         }
43     }
44     if(flag)
45         cout<<"YES"<<endl;
46     else
47         cout<<"NO"<<endl;
48     return 0;
49 }

原文地址:https://www.cnblogs.com/fu3638/p/9131476.html

时间: 2024-10-25 07:49:01

Codeforces 552C Vanya and Scales(进制转换+思维)的相关文章

CodeForces 1B-字符串,进制转换与数学

一个萌新的成长之路 Background 同学们都回家了,只有我和wjh还有邢神在机房敲代码,吃random口味的方便面-- Description Translated by @PC_DOS from luogu In the popular spreadsheets systems (for example, in Excel) the following numeration of columns is used. The first column has number A, the se

CodeForces 552C Vanya and Scales

Vanya and Scales Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 552C Description Vanya has a scales for weighing loads and weights of masses w0, w1, w2, ..., w100 grams where w is some

Codeforces 552C Vanya and Scales(思路)

题目大概说有101个质量w0.w1.w2.....w100的砝码,和一个质量m的物品,问能否在天平两边放物品和砝码使其平衡. 哎,怎么没想到..注意到w0.w1.w2.....w100—— 把m转化成w进制数,枚举每一位: 如果第i位是0那OK: 如果是1那就要把砝码wi放在天平另一边抵消: 如果是w-1那就要把砝码wi放到天平同一边,使其变为0并进位,这时第i+1位的权+1: 而如果是其他情况,那么肯定不能平衡了. 1 #include<cstdio> 2 #include<cstri

暴力/进制转换 Codeforces Round #308 (Div. 2) C. Vanya and Scales

题目传送门 1 /* 2 题意:问是否能用质量为w^0,w^1,...,w^100的砝码各1个称出重量m,砝码放左边或在右边 3 暴力/进制转换:假设可以称出,用w进制表示,每一位是0,1,w-1.w-1表示砝码与物品放在一起,模拟判断每位是否ok 4 详细解释:http://blog.csdn.net/u011265346/article/details/46556361 5 总结:比赛时压根没往进制去想,连样例也不知道是怎么回事..中文不行啊:( 6 */ 7 #include <cstdi

Spreadsheets codeforces1B(模拟+进制转换)

http://codeforces.com/problemset/problem/1/B 题意:转换两种行和列的表示方法. 分析:(弱弱的说下一开始自己并不会写,只是想到AA=26*1+1,就想着用除法和余数来解决了,后来发现这么模拟下去,数据好大啊,心好累..然后就没有然后了).后来问的别人,告诉我用26进制转换(我去,我为啥想不到,啥都别说了,看代码) #include <iostream> #include <stdio.h> #include <string.h>

任意进制转换算法

任意进制转换算法 N年没有写博客,发个进制转换的玩下,支持负数:功能属于简化版的 Convert.ToInt32 ,特点是: 1.任意位,如:0,1(二进制),0...7(八进制),0...9,A...F(16进制),0...N(N进制),或者是:[email protected]#$%^&*(8进制,字符符号),也可以是中文. 2.8 byte 最大长度. 3.C#源码. 最近写markdown格式习惯啦,cnblogs啥时候全改掉算了,别用这个htmleditor算了. 先说明下进制转换的基

03 php 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换,算术运算,比较运算

03 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换, 算术运算,比较运算,逻辑运算,短路现象, 三目运算符,字符型运算: 数据类型 整体划分 标量类型: int, float, string, bool 复合类型: array,     object 特殊类型: null,     resouce 整数类型int, integer 3种整数表示法 十进制写法:123: $n1 = 123; 八进制写法: 0123 $n2 = 0123; 十六进制写法: 0x123 $n3

计算机进制转换

一.计算机只认识0和1,二进制. 二.2进制转换成 8进制 和 16进制,如下图: 二进制 > 八进制 :  研究上图发现,3位最高二进制可以用来表示一位八进制.所以,将二进制分解每3位,不够前面补0,然后每3位转换为10进制,顺序排列即可. 二进制 > 十六进制  :4位最高二进制可以用来表示一位十六进制.所以,将二进制分解每4位,不够前面补0,然后每4位转换为10进制,超过9用字母表示即可.顺序排列即可. 如下: 二进制 > 十进制:   11001001 = 2^7+2^6+2^3

原理之一,进制转换

原理之一,进制转换 日常生活中采用个数字都是十进制,而计算机采用的是运算更简单.易实现且可靠,为逻辑设计提供了有力途经的二进制,除此之外还有八进制和十六进制作为二进制的缩写. 进制:逢N进一,N是每种进位计数制表示一位数所需要的符号数目为基数. 二进制:逢二进一,借一当二,包含的数字(0.1) 八进制:逢八进一,借八当一,包含(0.1.2.3.4.5.6.7) 十六进制:逢十六当一,以一当十六,包含(0.1.2.3.4.5.6.7.8.9.10(A).11(B).12(C).13(D).14(E