牛客 题目:233串(两个233串相乘)

题目:233

Kirai聊天的时候非常喜欢发“233”,“233”来源于猫扑表情第233号,是一张捶地大笑的表情。

Kirai每当看到很好玩的消息的时候总会回一串“2333...”。
Kirai其实十分高冷,他发现了这个问题。为了不希望别人立刻知道他在笑,他决定将两个“233..”乘在一起发出去。


 

输入描述:

输入样例有多组,全部是正整数。首先输入样例组数T(T≤1500)。
接下来输入T组数,每组数字由两个233串组成,每个233串长度3≤n≤50。
数据保证每个233串必然会有一个2作为开头,并且3的数量≥2。

示例1

输入

2
233 233
23333333333333333333333333333333333333333333333333 23333333333333333333333333333333333333333333333333

输出

54289
544444444444444444444444444444444444444444444444428888888888888888888888888888888888888888888888889


代码

#include <stdio.h>
int main()
{

    int T;
    scanf("%d", &T);
    
    // 执行T次
    while (T--) 
    {
        char a[100], b[100];
        scanf("%s %s", a, b);
        int m = strlen(a), n = strlen(b), temp, i;

        // 交换m,n,使m<=n
        if (m > n)
        {
            temp = m;
            m = n;
            n = temp;
        }
        // 打印每个数第一位数都有的“5”
        printf("5");
        // 打印“4”
        for (i = 0; i < m - 2; i++)
        {
            printf("4");
        }

        // 判断m是否等于n
        if (m == n)
            printf("2");
        if (m < n)
        {
            printf("3");
            for (i = 0; i < n - m - 1; i++)
            {
                printf("6");
            }
            printf("5");
        }

        // 打印“8”
        for (i = 0; i < m - 2; i++)
        {
            printf("8");
        }

        // 打印每个数最后一位数都有的“5”
        printf("9\n");
    }
    return 0;
}


解析

首先我们可以用下面的代码打印出233串的部分结果

#include <stdio.h>
int main()
{
    long long int a = 23, b = 23, i, j;
    for (i = 0; i < 7; i++)
    {

        for (j = 0; j < 7; j++)
        {
            printf("%lld*%lld=%lld\n", a, b, a * b);
            b = b * 10 + 3;
        }
        a = a * 10 + 3;
        b = a;
    }
    return 0;
}

结果

23*23=529
23*233=5359
23*2333=53659
23*23333=536659
23*233333=5366659
23*2333333=53666659
23*23333333=536666659
233*233=54289
233*2333=543589
233*23333=5436589
233*233333=54366589
233*2333333=543666589
233*23333333=5436666589
233*233333333=54366666589
2333*2333=5442889
2333*23333=54435889
2333*233333=544365889
2333*2333333=5443665889
2333*23333333=54436665889
2333*233333333=544366665889
2333*2333333333=5443666665889
23333*23333=544428889
23333*233333=5444358889
23333*2333333=54443658889
23333*23333333=544436658889
23333*233333333=5444366658889
23333*2333333333=54443666658889
23333*23333333333=544436666658889
233333*233333=54444288889
233333*2333333=544443588889
233333*23333333=5444436588889
233333*233333333=54444366588889
233333*2333333333=544443666588889
233333*23333333333=5444436666588889
233333*233333333333=54444366666588889
2333333*2333333=5444442888889
2333333*23333333=54444435888889
2333333*233333333=544444365888889
2333333*2333333333=5444443665888889
2333333*23333333333=54444436665888889
2333333*233333333333=544444366665888889
2333333*2333333333333=5444443666665888889
23333333*23333333=544444428888889
23333333*233333333=5444444358888889
23333333*2333333333=54444443658888889
23333333*23333333333=544444436658888889
23333333*233333333333=5444444366658888889
23333333*2333333333333=-895788554469765959
23333333*23333333333333=-8957885544627659591

请按任意键继续. .


排序后


分析后

所有第一个数都是“5”,最后一个数都是“9”

交换后m<=n

当m=n时,第二个数是“2”,且后面没有“3”,“6”“5”数。


可知,当m大于2时,才有“4”。


 可知,“4”的个数与n无关。


 可知,“4”的个数与m有关。



 可知,当m大于2时,“4”的个数与m有关,关系为m-2。

由总图可知,“4”与“8”关系相同,关系都为m-2。


可知,“6”与n有关。


可知,“6”与m有关。
 


 

可知,“6”的个数与位数小的m,n有关,关系为n-m-1。


这道题目主要是找到233串相乘的规律,分类讨论

若有错误,还请指正,谢谢。
 

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值