CF1288B-Yet Another Meme Problem

题目:https://vjudge.net/problem/CodeForces-1288B

题意:给出A、B,求出a、b的对数满足1<=a<=A、1<=b<=B且 a * b + a + b = conc(a,b),其中conc(a,b)等于a和b的数字合并得到的数,例如a=12,b=10,则conc(a,b)=1210。

分析:数学题。从题意可以得到conc(a,b)=a*1eN+b,其中1eN为10的N次方。即a * b + a + b=a*1eN + b,整理得到 b+1=1eN。也就是说b一定为10的某个次方减去1,而a随意。故我们只需知道小于等于B的数中有多少个能由9组成,再乘以A便是答案。

 1 #include <stdio.h>
 2 int check(long long t){
 3     int x;
 4     while(t>0){
 5         x=t%10;
 6         t/=10;
 7         if(x!=9)return 0;
 8     }
 9     return 1;
10 }
11 int main(void){
12     int t;
13     scanf("%d",&t);
14     while(t--){
15         long long  a,b;
16         scanf("%lld %lld",&a,&b);
17         int n=0;
18         long long k=b;
19         while(k>0){
20             k/=10;
21             n++;
22         }
23         if(check(b))printf("%lld
",a*n);
24         else printf("%lld
",a*(n-1));
25     }
26     return 0;
27 }
原文地址:https://www.cnblogs.com/yanying7/p/12357953.html