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 (SoungEarlf@gmail.com)
* @Link : https://github.com/
* @Version :
*/
#include<bits/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 = 1e5+20;
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;
}

CF758 D. Ability To Convert 细节处理字符串的更多相关文章

  1. Codeforces Round #392 (Div. 2)-758D. Ability To Convert(贪心,细节题)

    D. Ability To Convert time limit per test 1 second Cmemory limit per test 256 megabytes input standa ...

  2. Codeforces Round #392 (Div. 2)-D. Ability To Convert

    D - Ability To Convert 题目大意:给你一个数字 n 接下来再输入一个数字 w(<10^60),表示w这个数字是 n 进制的, 并且超过十进制也用数字表示,这样就有多种组合了 ...

  3. Codeforces758D Ability To Convert 2017-01-20 10:29 231人阅读 评论(0) 收藏

    D. Ability To Convert time limit per test 1 second memory limit per test 256 megabytes input standar ...

  4. 【动态规划】Codeforces Round #392 (Div. 2) D. Ability To Convert

    D. Ability To Convert time limit per test 1 second memory limit per test 256 megabytes input standar ...

  5. CodeForces 758 D Ability To Convert

    Ability To Convert 题意:给你一个n进制的60位的数,但是由于Alexander只会写0->9,所以他就会用10来表示十而不是A(假设进制>10); 题解:模拟就好了,先 ...

  6. D. Ability To Convert

    http://codeforces.com/contest/758/problem/D D. Ability To Convert time limit per test 1 second memor ...

  7. Codeforces 758D:Ability To Convert(思维+模拟)

    http://codeforces.com/problemset/problem/758/D 题意:给出一个进制数n,还有一个数k表示在n进制下的值,求将这个数转为十进制最小可以是多少. 思路:模拟着 ...

  8. codeforces 758D Ability To Convert【DP】

    在N进制下给你一个数,要你转换成最小的十进制数; 状态转移方程:从前向后 dp[j]表示j位前数列的最小十进制数 dp[j]=min(dp[j],dp[i]*n+x) 程序: #include < ...

  9. Codeforces 758D Ability To Convert(区间DP)

    题目链接:http://codeforces.com/problemset/problem/758/D 题意:一个n进制下的数k,其中k不会用字母,如果有A就用10代替了.求k这个数对应的,在10进制 ...

随机推荐

  1. Alpha-end

    前言 失心疯病源10 团队代码管理github 个人感悟 肝不动了,肝不动了.明天如果见不到我,不要太想我. 站立会议 队名:PMS 530雨勤(组长) 今天完成了那些任务 熬夜肝代码 代码签入git ...

  2. C#高级编程 (第六版) 学习 第一章:.Net体系结构

    第一章 .Net体系结构 1,公共语言运行库(Common Language Runtime, CLR) .Net Framework的核心是其运行库的执行环境,称为公共语言运行库,或.Net运行库. ...

  3. J2EE面试常见试题

    一.基础问答 1.下面哪些类可以被继承? java.lang.Thread (T) java.lang.Number (T) java.lang.Double (F) java.lang.Math  ...

  4. java沙盒入门

    程序员写一个Java程序,默认的情况下你可以访问任意的机器资源,比如读取,删除一些文件或者网络操作等.当你把程序部署到正式的服务器上,系统管理员要为服务器的安全承担责任,那么他可能不敢确定你的程序会不 ...

  5. iOS- Swift和Object-C的混合编程

    1.前言   事实证明,在短时间内Swift还取代不了Object-C, 而且.... Apple Swift 开发小组的人说的:「We'll recommend people start with ...

  6. 结对编程学习fault、error、failure三种状态

    点滴成就 学习时间 新编写代码行数 博客量(篇) 学习知识点 第一周 10小时 0 0 了解软件工程 第二周 10小时 0 1 项目开题 第三周 15小时 0 1 开通博客.开展项目调查 第四周 20 ...

  7. 10个linux网络和监控命令

    我下面列出来的10个基础的每个linux用户都应该知道的网络和监控命令.网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nsloo ...

  8. js & right click menu

    js & right click menu https://stackoverflow.com/questions/4909167/how-to-add-a-custom-right-clic ...

  9. 第181天:HTML5——视频、音频

    一.HTML5新增的video.source标签 <video width="320" height="240" controls="contr ...

  10. noip模拟题《序》sort

    [问题背景]      zhx 给他的妹子们排序.[问题描述]      zhx有N个妹子,他对第i个妹子的好感度为ai, 且所有ai两两不相等.现在N个妹子随意站成一 排,他要将她们根据好感度从小到 ...