题目背景
无
题目描述
今天小明学会了进制转换,比如(10101)2 ,那么它的十进制表示的式子就是 :
1*2^4+0*2^3+1*2^2+0*2^1+1*2^0,
那么请你编程实现,将一个M进制的数N转换成十进制表示的式子。
注意:当系数为0时,该单项式要省略。
输入输出格式
输入格式:
两个数,M和N,中间用空格隔开。
输出格式:
共一行,一个十进制表示的式子。
输入输出样例
输入样例#1:
2 10101
输出样例#1:
1*2^4+1*2^2+1*2^0
说明
对于100%的数据,1<M<10,N的位数不超过1000。
#include#include #include #include #include using namespace std;int n,ans;int a[3000009],f[3000009];int b[2000001],cntb,c[2000001],cntc;long long tot;int main(){ scanf("%d",&n); ans=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]),a[i+n]=a[i],f[i]=f[i-1]+a[i]; if(a[i]<0) b[++cntb]=i,b[++cntb]=i+n; else if(a[i]>0) c[++cntc]=i; } for(int i=n;i<=n+n;i++) f[i]=f[n]+f[i-n]; int u,t=1; for(int i=1;i<=cntc;i++) { u=c[i];t=1; for(int j=1;j<=cntb;j++) if(f[b[j]]-f[u-1]<0 && b[j]>=u&&b[j]<=u+n){t=0;break;} if(t) ans++; } cout<