51nod 1449 砝码称重【天平/进制】
来源:互联网 发布:mac win10双系统切换 编辑:程序博客网 时间:2024/05/01 22:20
题意:
给你w,n,问你在w^0,w^1,w^2...各种一个,问你能不能用这些砝码和重量为m的东西放在天平上使得天平平衡;
思路:
这个很容易联想到进制:
如果把m放在是一边的话,其实对于砝码就是纯粹的相加,能不能被表示成这样一个进制,每个位上就是是0或1
那么如果两边都要放呢?
所以就是说我要怎么利用m和已拥有的,构造一个仅有01的进制数
为什么这么说呢?因为是左边右边等价啊;
给你w,n,问你在w^0,w^1,w^2...各种一个,问你能不能用这些砝码和重量为m的东西放在天平上使得天平平衡;
思路:
这个很容易联想到进制:
如果把m放在是一边的话,其实对于砝码就是纯粹的相加,能不能被表示成这样一个进制,每个位上就是是0或1
那么如果两边都要放呢?
所以就是说我要怎么利用m和已拥有的,构造一个仅有01的进制数
为什么这么说呢?因为是左边右边等价啊;
然后从低位往高位处理,保证砝码利用次数<=1;
#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int>PII;const double eps=1e-5;const double pi=acos(-1.0);//const int mod=1e9+7;const int INF=0x3f3f3f3f;int w,n;int bit[35];int num;void init(){ num=0; while(n) { bit[num++]=n%w; n/=w; }}int main(){ scanf("%d%d",&w,&n); init(); for(int i=0;i<num;i++) { if(bit[i]>=w) { bit[i]-=w; bit[i+1]++; } if(bit[i]<=1) //0就用,1就不用 continue; else if(bit[i]==w-1) //和m一边的+w^(i-1)使得另一边只要+w^i的就行; bit[i+1]++; else { puts("NO"); return 0; } } puts("YES"); return 0;}
0 0
- 51nod 1449 砝码称重【天平/进制】
- 51nod 1449:砝码称重
- 51nod 1449 砝码称重
- 51nod 1449 砝码称重
- [51nod 1449]砝码称重
- 51NOD 1449 砝码称重
- 51nod 1449 砝码称重
- 51nod 1449 砝码称重
- 1449 砝码称重 51NOD
- 51nod-1449-砝码称重
- 51Nod 砝码称重
- 51nod 1449 砝码称重(经典贪心+进制)
- 51nod 1449 砝码称重(思维+进制)
- 51Nod-1449-砝码称重
- 51nod 1449 砝码称重【进制数思维】
- 51nod 1449 砝码称重,贪心
- 51Nod 1449(砝码称重)
- 51nod 1837 砝码称重
- 使用Eclipse开发ABAP程序
- $_SERVER
- Jetty原理研究
- 设计模式-----COMMAND模式
- PostgreSQL学习第九篇--数据类型分类
- 51nod 1449 砝码称重【天平/进制】
- PHP APC缓存函数使用教程
- echarts实现饼图
- const和指针搭配时的作用范围
- iOS开发之app之间的跳转以及跳转到appstore
- 使用tcpdump观查datetime端口的实验记录
- 去掉字符串中的特殊字符
- C++宏定义详解
- jQuery Ajax请求