CodeForces 758 D Ability To Convert

Ability To Convert

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

题解:模拟就好了,先走往前走进制的位数的倍数,再判断一下首位是不是0,或者这个数有没有大于等于进制,如果有就不行,就要往后走,走到一个非0开头的点,或者就是走到只有1个0的点,然后算出目前这段区间的答案加一个倍数就好了。

代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout);
 4 #define LL long long
 5 #define ULL unsigned LL
 6 #define fi first
 7 #define se second
 8 #define pb push_back
 9 #define lson l,m,rt<<1
10 #define rson m+1,r,rt<<1|1
11 #define max3(a,b,c) max(a,max(b,c))
12 #define min3(a,b,c) min(a,min(b,c))
13 typedef pair<int,int> pll;
14 const int INF = 0x3f3f3f3f;
15 const LL mod =  (int)1e9+7;
16 const int N = 2e5 + 100;
17 char str[N];
18 char cmp[N];
19 LL ans = 0;
20 LL tmp = 0;
21 LL n = 0;
22 LL base = 1;
23 LL b = 1;
24 LL t;
25 vector<LL> vc;
26 int main(){
27     scanf("%s", cmp);
28     int len1 = strlen(cmp);
29     for(int i = 0; i < len1; i++){
30         n = n*10 + cmp[i] - ‘0‘;
31     }
32     scanf("%s", str);
33     if(str[0] == ‘0‘){
34         cout << 0 << endl;
35         return 0;
36     }
37     int len2 = strlen(str);
38     for(int i = len2-1; i >= 0;){
39         int j = i - len1 + 1;
40         if(j < 0) j = 0;
41         //cout << j <<‘ ‘<< i << endl;
42         if((j+len1-1 == i && strcmp(cmp,str+j) <= 0) || str[j] == ‘0‘){
43             j++;
44             if(j >= i) j = i;
45             while(str[j] == ‘0‘ && j < i) j++;
46             t = 0;
47             for(int k = j; k <= i; k++)
48                 t = t*10 + str[k] - ‘0‘;
49             ans += b*t;
50             b *= n;
51         }
52         else {
53             t = 0;
54             for(int k = j; k <= i; k++)
55                 t = t*10 + str[k] - ‘0‘;
56             ans += b*t;
57             b *= n;
58         }
59         i = j - 1;
60     }
61     printf("%I64d", ans);
62     return 0;
63 }

CF 758 D

原文地址:https://www.cnblogs.com/MingSD/p/9102883.html

时间: 2024-10-10 23:33:12

CodeForces 758 D Ability To Convert的相关文章

Codeforces 758D Ability To Convert dp

题目链接: http://codeforces.com/problemset/problem/758/D 题意: 一个n进制下的数k,其中k不会用字母,如果有A就用10代替了.求k这个数对应的,在10进制下最小的数. 思路: 来自:http://www.cnblogs.com/TreeDream/p/6322755.html 本质上是把数字分成若干段使得每一段 <n 且没有前导 0 dp[i] 表示前 i 个字符划分好之后能得到的最小数. 状态枚举下一段怎么切. 枚举每一个分割点,对什么进行更新

Codeforces 758D Ability To Convert(区间DP)

题目链接:http://codeforces.com/problemset/problem/758/D 题意:一个n进制下的数k,其中k不会用字母,如果有A就用10代替了.求k这个数对应的,在10进制下最小的数. 分析: 本质上是把数字分成若干段使得每一段 <n 且没有前导 0 dp[i] 表示前 i 个字符划分好之后能得到的最小数. 状态枚举下一段怎么切. 1 #include<cstdio> 2 #include<cstring> 3 #include<cstdli

CodeForces 758 C Unfair Poll

Unfair Poll 题意:一共有n排同学每排同学有m个人, 老师问问题有一个顺序, 先从第一排开始问,问完第一排的所有同学之后,再问第2排的,对于所有排的访问顺序为 1,2,3--n-1,n,n-1,n-2,--,2,1,2,然后每次访问到新的一排先要问完这一排的所有人才会往下一(目标)排走. 题解:先声明我们开一个数组来记录这一排被询问的总次数,先将k  /= m, 这个代表的是完全访问的次数,即一整排m位同学都问完有几次,如果  完全访问的次数< n, 我们就将前几排全访问次数的人都加上

cf 758D - Ability To Convert

从后往前贪心就好了.各种各样0的情况太BT了.. (各种爆long long,f**k) 1 #include<bits/stdc++.h> 2 #define LL long long 3 #define N 100005 4 #define lowbit(x) x&(-x) 5 using namespace std; 6 inline int ra() 7 { 8 int x=0,f=1; char ch=getchar(); 9 while (ch<'0' || ch&g

codeforces 758 D

n进制 n进制数 求一个最小的十进制数上面那个数可以变成 一眼看到就是不会   看题解 是区间DP dp[i] 从前处理到i位的最小的数 dp[i]=min(dp[i],dp[i-1]*n+now); #include<stdio.h> #include<algorithm> #include<string.h> #include<math.h> #include<set> #include<string> using namespa

Codeforces-758D Ability To Convert

传送门 给定一个N,和一个字符串,已知字符串是由不大于N的十进制数拼接而成,从左到右分别代表N^k, N^(k-1)...., N^1, N^0的权数,求这个字符串代表的数的最小值 嗯 注意前导零 1 #include <cmath> 2 #include <cstdio> 3 #include <cstring> 4 #include <iostream> 5 #include <algorithm> 6 #include <queue&

Codeforces Round #392 (Div. 2)

A - Holiday Of Equality(water) 题意:一共给你N个数,让你向上补数值,使得最终所有数值都相等,输出最少花费. 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 const int INF = 0x3f3f3f3f; 5 const int maxn = 100 + 5; 6 7 int a[maxn]; 8 9 int main() 10 { 11 int n;

business knowledge

Finance knowledge Trading---At the core of our business model is Trading, which involves the buying and selling of financial tools to generate profit. Trading takes place in our Global Markets division, which spans collateralised financing, commoditi

卷积神经网络用于视觉识别Convolutional Neural Networks for Visual Recognition

Table of Contents: Architecture Overview ConvNet Layers Convolutional Layer Pooling Layer Normalization Layer Fully-Connected Layer Converting Fully-Connected Layers to Convolutional Layers ConvNet Architectures Layer Patterns Layer Sizing Patterns C