原题链接 https://www.luogu.org/problemnew/show/P2084
这个题的思路就是先将输入的数字存到字符数组里,然后求出这一串数字中的非0元素的个数total,并记录最后一位非0元素的位置。输出时,先输出total-1个,最后再补上第total个,这样加号的问题就解决了。(有比我方法更简单的大佬勿喷本蒟蒻)废话少说,上代码!
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int n,len,total=0,p=0,h; //len求输入的数字的长度,total表示数字串中的非0元素,h用来记录最后一位非0元素的位置
char a[1001];
cin>>n>>a; //注意a后面不加任何东西
len=strlen(a); //求数组a的长度len
for(int i=0;i<len;i++)
if(a[i]!='0') total++; //计算非0元素的个数
for(int i=0;i<len;i++)
{if(a[i]!='0')
{p++;if(p==total) h=i;}} //每找到一位非0元素p++,当p==total时,说明是最后一位非0元素,用h记录当前的位置i
for(int i=0;i<=len-1;i++) //输出
{if(a[i]!='0'&&i!=h) {cout<<a[i]<<"*"<<n<<"^"<<len-1-i<<"+";}} //i!=0是为了让它只输出a【h】前面的数,只是单纯的处理加号的问题.....
cout<<a[h]<<"*"<<n<<"^"<<len-1-h; //输出最后一位非0元素a【h】
return 0; //完美结束!!!
}