淮安做网站的公司,wordpress语言包编辑,西安有哪些好玩的,免费咨询牙齿问题link 题意#xff1a;给定进制数n及一串数字,问在此进制下这串数能看成最小的数#xff08;10进制#xff09;是多少#xff08;如HEX下 1|13|11 475#xff09; 思路#xff1a;此题要仔细思考细节。首先要想使数最小那么必定有个想法是使低位的数尽可能大即位数尽可能…link 题意给定进制数n及一串数字,问在此进制下这串数能看成最小的数10进制是多少如HEX下 1|13|11 475 思路此题要仔细思考细节。首先要想使数最小那么必定有个想法是使低位的数尽可能大即位数尽可能多个人想法是从最后一位开始向前遍历如果位数没有超过n的位数且数值比n小那么该数可以加入上一个分隔。如果不符合条件则说明该数应该作为新的分隔。 那么在此就有一个问题了如果一个分隔是以0开始的如10000显然我们也将0认定为是分隔的一部分但如果有前导0了(11进制 10110)显然分隔是这样的10|1|10此时这个0属于最前面的那个分隔。 故当某个数判断不符合加入上一个分隔的条件那么还要判断下上一个遍历的数字是否是0否则要逐步回退到非0位,并将过程中这些0作为当前分隔的一部分。 /** Date : 2017-04-02-18.25* Author : Lweleth (SoungEarlfgmail.com)* Link : https://github.com/* Version :*/
#includebits/stdc.h
#define LL long long
#define PII pair
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std;const int INF 0x3f3f3f3f;
const int N 1e520;
const double eps 1e-8;char a[100];
LL ans 0;
int main()
{LL n;while(~scanf(%lld%s, n, a)){ans 0;int x strlen(a);int y 0;int t n;while(t)y, t / 10;LL cnt 1;int bit 0;int rec x - 1;LL b 1;for(int i x - 1; i 0; i--){if(t cnt * (a[i] - 0) n bit y)t t cnt * (a[i] - 0), cnt * 10, bit;else{int ct 0;if(a[i 1] 0)//考虑到有前导0时回退加值{while(a[i 1] 0){ct;if(i 1 rec)break;i;}}ans t * b;b b * n;t a[i] - 0;bit 1;cnt 10;rec i;}}if(t ! 0)ans t * b;printf(%lld\n, ans);}return 0;
}转载于:https://www.cnblogs.com/Yumesenya/p/6728372.html