Educational Codeforces Round 80. B - Yet Another Meme Problem

题面:https://codeforces.com/contest/1288/problem/B

题目大意:

令conc(a,b)函数得出的结果为将ab拼接得到的数字。

例如:conc(12,23)=1223

a和b不会包括前导0!

接下来,你已知A和B,问有多少对的(a,b)满足

1≤a≤A , 1≤b≤B

a*b+a+b=conc(a,b)

解题思路:

想法题,只需要满足b这个数字每一位全为9,那么等式 a*b+a+b=conc(a,b) 恒成立

因为 a*b+a+b=a*(b+1)+b

b+1为一个首位是1,其余位全为0的数,且长度为b的长度+1

所以a*(b+1)+b相当于a*(Length(b)+1)+b,即满足conc(a,b)的功能

故,只要计算1到B中有多少每一位全为9的数,再乘以A即可(a任取恒满足)

注意,最坏情况下a有1e9种,b有9种,最大的答案为9e9,超出int范围,必须用long long

 1 /*
 2 Written By. StelaYuri
 3 On 2020/01/14
 4 */
 5 #include<bits/stdc++.h>
 6 using namespace std;
 7 typedef long long ll;
 8 const ll mod=1000000007;
 9 bool isnine(ll in){
10     while(in){
11         if(in%10!=9)
12             return false;
13         in/=10;
14     }
15     return true;
16 }
17 int len(ll in){
18     int ans=0;
19     do{
20         in/=10;
21         ans++;
22     }while(in);
23     return ans;
24 }
25 int main(){
26     ios::sync_with_stdio(0);
27     cin.tie(0);cout.tie(0);
28     ll T,A,B,i,j,k;
29     cin>>T;
30     while(T--){
31         cin>>A>>B;
32         if(isnine(B))
33             cout<<A*len(B)<<endl;
34         else
35             cout<<A*(len(B)-1)<<endl;
36     }
37
38     return 0;
39 }

原文地址:https://www.cnblogs.com/stelayuri/p/12221292.html

时间: 2024-10-09 04:33:36

Educational Codeforces Round 80. B - Yet Another Meme Problem的相关文章

Educational Codeforces Round 80 (Rated for Div. 2)

\[Educational\ Codeforces\ Round\ 80\ (Rated\ for\ Div.\ 2)\] A.Deadline 打勾函数找最小值,在\(\sqrt{d}\)邻域里找\(x\)最小化\(x+\lceil\frac{d}{x+1}\rceil\)即可 //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<bits/stdc++.h> using namespace

Educational Codeforces Round 80 A-E简要题解

contest链接:https://codeforces.com/contest/1288 A. Deadline 题意:略 思路:根据题意 x + [d/(x+1)] 需要找到一个x使得上式小于等于n,即x + [d/(x+1) ] <=n,不等式两边同时+1得 x+1 + [d/(x+1)] <=n + 1当且仅当(x+1)2 = d时,式子左边最小,所有只需要判断一下最小值是否<=n+1就可以知道该不等式是否存在x满足题意了,即找到x = √d - 1,判断一下即可. AC代码:

Educational Codeforces Round 80 (Rated for Div. 2)部分题解

A. Deadline 题目链接 题目大意 给你\(n,d\)两个数,问是否存在\(x\)使得\(x+\frac{d}{x+1}\leq n\),其中\(\frac{d}{x+1}\)向上取整. 解题思路 方案一:利用均值不等式公式推导 \(x+\frac{d}{x+1}=x+1+\frac{d}{x+1}-1\geq2\sqrt{d}-1\) 所以 \(\min(x+\frac{x}{d+1})=2\sqrt{d}-1\) 因此去判断\(2\sqrt{d}-1\leq n\)是否成,即\(4\

Educational Codeforces Round 80 (Rated for Div. 2) 题解

Deadline Yet Another Meme Problem Two Arrays Minimax Problem Messenger Simulator Deadline \[ Time Limit: 2 s\quad Memory Limit: 256 MB \] 这是个对勾函数,所以最小的话是在 \(sqrt\) 位置,所以只要找这附近的数字就可以了. view /************************************************************

Educational Codeforces Round 80

QAQ: 其中C,D,E题的思路来自 https://www.bilibili.com/video/av83609526?p=5 A. Deadline 题意: 给出一个式子对于给出的d,求当x是整数时的最小解. 思路: 简单数学题,这个式子变形一下就是我们中学学的对号函数,但要注意下向上取整和整数x 代码: #include <bits/stdc++.h> using namespace std; typedef long long LL; int main() { int T; LL n,

Educational Codeforces Round 80 (Rated for Div. 2)(C - Two Arrays )

C - Two Arrays 题目链接:https://codeforces.com/contest/1288/problem/C 题目: 题意:给你n,m,利用1~n之间的数(可重复)来组成长度为m的数组a,b,要求数组a非递减,数组b非递增,且a数组的数<=b数组中的数,求出a,b数组对数 思路:用动态规划,dp[i][j]是第i个位置放数字j的方案数,根据题意可以将b数组反置然后接在a后面,则该数组长度为2m,为一个非递减序列,则就是求1~n这些数字可重复组成多少种长度为2m的非递减序列,

Educational Codeforces Round 80 (Rated for Div. 2)参加感悟

这次比赛有14000+的人报名,结果我得了266名,创了新纪录. 进过这次比赛,我有回答了1800+. 寒假到了,又可以每次比赛都打了.平时进步很慢,我希望能在寒假有更大的进步. 作为寒假第一场比赛,发挥让我还是很满意的. 开始讲题: A: http://codeforces.com/contest/1288/problem/A 这题太水了,直接是sqrt(d)-1和sqrt(d),如果它们不行,那么其他的也肯定不行. 直接上代码: 1 #include<bits/stdc++.h> 2 #d

Educational Codeforces Round 80 C. Two Arrays

http://codeforces.com/contest/1288/problem/C 题意: 用1—n构造两个长为m的数组a,b 满足a[i]<=b[i],a单调不减,b单调不增 求方案数 令dp[i][j][k] 表示构造了长度为i,a[i]=j,b[i]=k的方案数 dp[i][j][k]=Σ dp[i-1][h][p] (h<=p,h<=i,p>=k) 时间复杂度:m*n^4 前缀和.后缀和 优化: sum[i][j][k] 表示 Σ dp[i][1—j][k—n] 求的

Educational Codeforces Round 80 E. Messenger Simulator

http://codeforces.com/contest/1288/problem/E 题意: 有一个长度为n的循环队列,初始第i个位置的数字为i 有m次操作,每次操作把数字x放到队首,原队首与数字x原位置之间的数字在队列中后移一位 输出m次操作过程中,数字i在队列中最靠前和最靠后的位置 若数字i没有移动过, 它最靠前的位置就是初始位置i, 最靠后的位置就是初始位置加上移动过的大于它的数字个数 若数字i被移动过 它最靠前的位置就是1 最靠后的位置是max(初始位置加上第一次移动前移动的大于它的