nefuoj-1120:天平称重
2016-02-02 09:45
190 查看
description |
字符串现在有好多种砝码,他们的重量是 w^0,w^1,w^2,... 每种各一个。问用这些砝码能不能表示一个重量为m的东西。 |
input |
多组测试数据。 第一行有两个整数w,m (3 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9)。 |
output |
如果能,输出YES,否则输出NO。 |
sample_input |
3 7 3 12 |
sample_output |
NO YES 题解:这道题就是简单的贪心算法的题,只要有勇气做下去就能ac; code:#include <cstdio>#include <iostream>using namespace std;long long int a[100000000];//定义数组用来存不同指数幂的数,定小了会ce,所以干脆定一个特别大的数组;int main(){long long int w,m;//数据范围接近1000,000,000,接近int极限,所以用longlong比较保险;while(~scanf("%lld%lld",&w,&m)){a[0]=1;//注意int i;for(i=1 ; ; i++)//这里进行循环来保存不同的指数的数{a[i]=a[i-1]*w;if(a[i]>m)break;}//这里注意最后的a[i]是一个比m大的数哦;//这里是贪心算法的核心,每次都减去不大于m的w的i次幂,判断最后能不能是m恰好为0;while(m&&i)//跳出条件:m恰好为0,即满足条件,或者i变成0依旧没能使m为0,即不能满足条件;{--i;if(a[i]<=m)//注意m-=a[i];}if(m==0)puts("YES");//puts语句自带‘\n’哦;elseputs("NO");}return 0;} 补充:在函数以外定义数组一般最大只能定义到1000,000,000左右,函数内最大定义到60,000; |
相关文章推荐
- 封装原生ajax
- 正则表达式的3种匹配模式
- Android快速开发框架【转】
- JSP概述
- 【转】oracle系统视图作用大全
- redis 学习指南
- 【BZOJ 1415】 [Noi2005]聪聪和可可
- 利用pl/sql执行计划评估SQL语句的性能简析
- x86 SMI链路错误
- Cocos2d Android项目手动编译日记之SDK版本(二)
- http://www.oschina.net/code/snippet_2507499_53892
- 程序和shell脚本交互方法
- 【poj2891】同余方程组
- Android SDK开发包国内下载地址
- 体验jQuery和AngularJS的不同点及AngularJS的迷人之处
- Java2EE的controller层获取session的方法
- Android App 内存泄露之Handler
- springmvc文件上传使用uploadify插件
- C# Redis
- 比大小 log_2^3 与 log_3^5