C - Vanya and Scales

xiaoxiao2021-03-01  42

//题意:输入w,m。

表示给你一个w,你可以使用w^0,w^1,w^2w^3.........w^100;这一百零一个数,现在又给你一个数m,让你将m放到天平的右边,现在问你能否通过在两边天平上添加那101个砝码使得天平平衡。

//思路:

将m转换成w进制数,再枚举每一位上的数,如果第i位为w或者是w-1(加一的话就可以进位)的话可以将它转换为0,第i+1位进1。这些位上的数如果全能转换成1或者0的话,就表示m可以被表示,否则不能被表示。

#include<stdio.h> int main() { int w,m,i,k[100],t=0; scanf("%d%d",&w,&m); while(m) {k[t++]=m%w; m=m/w; } int flag=1; for(i=0;i<t;i++) {if(k[i]==w) {k[i]=k[i]-w; k[i+1]++; } if(k[i]<=1) continue; else if(k[i]==w-1) { k[i]=0; k[i+1]++; } else flag=0; } if(flag)printf("YES\n"); else printf("NO\n"); return 0; }

 

转载请注明原文地址: https://www.6miu.com/read-4184235.html

最新回复(0)