题目: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串相乘的规律,分类讨论
若有错误,还请指正,谢谢。