1 条题解
-
0
自动搬运
来自洛谷,原作者为

Ajwallet
厌倦追寻,一觅即中搬运于
2025-08-24 21:33:48,当前版本为作者最后更新于2017-10-24 17:27:31,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目大意
输入m,和一个m进制数,将它转换为用十进制表达的式子。
注意!
对于100%的数据,1<M<10,N的位数不超过1000
m<10我们就不需要去进行字母和数字的转换,直接用暴力模拟。
输入一个字符串,i从0到他的长度-1(c++)
当每一位不等于0,就输出对应的ci,m,i中间插上符号,如果不是最后一个,就加上+号。
判断式1
i==strlen(c)-1? '\n':'+'
80分代码
#include<cstdio> #include<cstring> using namespace std; int m; char c[1001]; int main() { scanf("%d ",&m); gets(c); for (int i=0;i<strlen(c);i++) if (c[i]!='0') printf("%c*%d^%d%c",c[i],m,strlen(c)-i-1,i==strlen(c)-1? '\n':'+');}//这种方法能过80分,因为有一种情况没有处理。 例如:
输入 2 10000
输出 1*2^4+
我们发现,它不一定是最后一个才不需要加号,可能它后面没有数了。
所以,我们改变一下判断方法。改成下一次再判断,当它不是0并且不是第一个数是输出+号
判断式2
if(i!=0&&c[i]!='0') printf("+");
AC代码
#include<cstdio> #include<cstring> using namespace std; int m; char c[1001]; int main() { scanf("%d ",&m); gets(c); for (int i=0;i<strlen(c);i++) { if(i!=0&&c[i]!='0') printf("+"); if (c[i]=='0') continue; printf("%c*%d^%d",c[i],m,strlen(c)-i-1); } }
- 1
信息
- ID
- 1049
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者