51nod 1449 砝码称重
来源:互联网 发布:知乎 避孕套 父母 编辑:程序博客网 时间:2024/05/02 06:13
好题。
如果答案为YES,则m可以表示为:
m=a[0]*w^0+a[1]*w^1+……
如果等号左右两边同时减去a[0]*w^0,即1、-1或者0,等号右边必然是w的倍数,也就是说,等号左边也必然是w的倍数。
也就是说,如果m、m-1或者m+1其中有一个为w的倍数,那么才能使得等式成立。(必要不充分条件)
等式左右两边同时消除a[0]*w^0的影响,再同除w,那么就变成了一个新的等式
m'=a[1]*w^0+a[2]*w^1+……
那么又回到了一开始,重新判断m'、m'-1或者m'+1其中是否有w的倍数。
循环结束的终止条件是m==1(或者m==0),如果中途存在m、m-1或者m+1没有一个是w的倍数的情况,则答案为NO。
#include<bits/stdc++.h>using namespace std;int main(){long long w,m;while(cin>>w>>m){while(m!=1){if(m%w==0)m/=w;else if((m+1)%w==0)m=(m+1)/w;else if((m-1)%w==0)m=(m-1)/w;elsebreak;}if(m==1)printf("YES\n");elseprintf("NO\n");}}
0 0
- 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 1837 砝码称重
- 51nod-1837-砝码称重
- 51Nod-1837-砝码称重
- ubuntu下opencv的IDE——QT
- kaggle比赛集成指南
- Alsa 驱动分析
- Java 下高效的反射工具包 ReflectASM 使用例解
- 如何清除Xcode8打印的系统日志
- 51nod 1449 砝码称重
- Linux启动过程
- 数学API Math.atan() 和Math.atan2() 三角函数复习
- hive 安装详解
- 机器学习回归篇-多元线性回归
- POJ: 2663 Tri tiling
- Maven入门指南① :Maven 快速入门及简单使用
- 创建第一个SpringBoot
- C++中stringstream的使用方法和样例