题目描述
Kirai聊天的时候非常喜欢发“233”,“233”来源于猫扑表情第233号,是一张捶地大笑的表情。
Kirai每当看到很好玩的消息的时候总会回一串“2333...”。
Kirai其实十分高冷,他发现了这个问题。为了不希望别人立刻知道他在笑,他决定将两个“233..”乘在一起发出去。
输入描述:
输入样例有多组,全部是正整数。首先输入样例组数T(T≤1500)。 接下来输入T组数,每组数字由两个233串组成,每个233串长度3≤n≤50。 数据保证每个233串必然会有一个2作为开头,并且3的数量≥2。
输出描述:
两个233串的乘积。
示例1
输入
2 233 233 23333333333333333333333333333333333333333333333333 23333333333333333333333333333333333333333333333333
输出
54289 544444444444444444444444444444444444444444444444428888888888888888888888888888888888888888888888889
思路:大数乘法,两个格式一样的数相乘一定有规律对吧,所以我们还可以找规律。。。
大数最好用java写:
import java.io.*; import java.util.*; import java.math.*; public class Main { public static void main(String [] args) { BigInteger a,b,c; int n; Scanner cin = new Scanner(System.in); n = cin.nextInt(); for(int i=0;i<n;i++) { a = cin.nextBigInteger(); b = cin.nextBigInteger(); c = a.multiply(b); System.out.println(c); } } }
规律代码:
#include <bits/stdc++.h> using namespace std; int main() { int t; char a[55],b[55]; scanf("%d",&t); getchar(); while(t--) { scanf("%s%s",a,b); int la = strlen(a) - 1,lb = strlen(b) - 1; if(la == lb) { printf("5"); for(int i = 0; i < la - 1; i++) printf("4"); printf("2"); for(int i = 0; i < la - 1; i++) printf("8"); printf("9\n"); } else { if(la > lb) swap(la,lb); printf("5"); for(int i = 0; i < la - 1; i++) printf("4"); printf("3"); for(int i = 0; i < lb - la - 1; i++) printf("6"); printf("5"); for(int i = 0; i < la - 1; i++) printf("8"); printf("9\n"); } } return 0; }