题目链接: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+;
  13. const int INF=0x3f3f3f3f;
  14. const double eps=1e-;
  15.  
  16. int a[];
  17.  
  18. int main(){
  19. FAST_IO;
  20. int w,m;
  21. cin>>w>>m;
  22. int cnt=;
  23. while(m){
  24. a[cnt++]=m%w;
  25. m/=w;
  26. }
  27. bool flag=true;
  28. for(int i=;i<;i++){
  29. if(a[i]>=w){
  30. a[i+]+=a[i]/w;
  31. a[i]%=w;
  32. }
  33. if(a[i]!=){
  34. if(a[i]==w-)
  35. a[i+]++;
  36. else if(a[i]==)
  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 ;
  49. }

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

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

    一个萌新的成长之路 Background 同学们都回家了,只有我和wjh还有邢神在机房敲代码,吃random口味的方便面-- Description Translated by @PC_DOS fro ...

  2. CodeForces 552C Vanya and Scales

    Vanya and Scales Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u S ...

  3. Codeforces 552C Vanya and Scales(思路)

    题目大概说有101个质量w0.w1.w2.....w100的砝码,和一个质量m的物品,问能否在天平两边放物品和砝码使其平衡. 哎,怎么没想到..注意到w0.w1.w2.....w100—— 把m转化成 ...

  4. JavaSE教程-03Java中分支语句与四种进制转换-思维导图

    思维导图看不清楚时: 1)可以将图片另存为图片,保存在本地来查看 2)右击在新标签中打开放大查看 if语句 a) if语句 基本语法结构: if(关系表达式) { 基本语句体 } 执行流程: 首先判断 ...

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

    题目传送门 /* 题意:问是否能用质量为w^0,w^1,...,w^100的砝码各1个称出重量m,砝码放左边或在右边 暴力/进制转换:假设可以称出,用w进制表示,每一位是0,1,w-1.w-1表示砝码 ...

  6. CF 552C 进制转换

    http://codeforces.com/problemset/problem/552/C C. Vanya and Scales time limit per test 1 second memo ...

  7. SQL Server 进制转换函数

    一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...

  8. [No000071]C# 进制转换(二进制、十六进制、十进制互转)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. JS中的进制转换以及作用

    js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: //10进制转为16进制 ().toString() // =>&q ...

随机推荐

  1. typescript数据类型

    // 布尔类型 let isDone: boolean = false; // 数字类型 所有数字都是浮点数 number let decLiteral: number = 6; let hexLit ...

  2. mysqldump导出多个数据库

    mysqldump -uroot -p111111 -q -e -R -x --databases account game_s1 game_s2 ...... > D:\backup.sql ...

  3. mac 10.13 build 一个 redis desktop manager

    build 的东西比较多,性能差的电脑编译会很久. 下载地址:https://redisdesktop.com/download 本来想下载一个,但是发现只有 windows 是免费的,不过官网提供了 ...

  4. struts2的MVC模式

    MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而得到更好的开发和维护效率. 在MVC模式中,应用程序被划分成了模型(Model).视 ...

  5. linux那些事

    useradd -m -d /home/changp -Gusers,dialout,video account_name 创建新的账号 passwd account_name 修改指定账号的密码

  6. Eloquent 条件查询——tucker-eric/eloquentfilter 笔记

    请阅读 https://github.com/Tucker-Eric/EloquentFilter , 里面有很全的文档和注释,以下仅列出关键部分. 1. 安装 composer require tu ...

  7. python使用数组作为索引遍历数组

    python使用数组作为索引遍历数组 觉得有用的话,欢迎一起讨论相互学习~Follow Me python使用数组作为索引遍历数组 import numpy as np a=np.arange(0,5 ...

  8. 科学计算三维可视化---TVTK管线与数据加载(数据集)

    一:数据集 三维可视化的第一步是选用合适的数据结构来表示数据,TVTK提供了多种表示不同种类数据的数据集 (一)数据集--ImageData >>> from tvtk.api im ...

  9. poj 2125 Destroying The Graph (最小点权覆盖)

    Destroying The Graph http://poj.org/problem?id=2125 Time Limit: 2000MS   Memory Limit: 65536K       ...

  10. PHP7 学习笔记(二)PHP5.9 升级到PHP7 遇到的一些坑的记录(php-fpm 图解)

    apache_event_php-fpm 示意图: nginx-php-fpm示意图: Worker-Master-Server TCP-Nginx_PHP Nginx-FastCGI 1.使用$_G ...