UDP广播协议叫吃饭


私信TA

用户名:Mustenaka

访问量:134858

签 名:

个人博客www.mustenaka.cn

等  级
排  名 12
经  验 23729
参赛次数 8
文章发表 196
年  龄 3
在职情况 学生
学  校 Sky_box
专  业 NE

  自我简介:

欢迎光临我的博客www.mustenaka.cn,Python,C#,U3D,C/C++开发合作可以找我

解题思路:

    输入1---->用字符串in1存储---->逆序转换成为数组a----->同理输入2,最后相乘用一个ans存下来,逆序输出即可
参考代码:

#include<bits/stdc++.h>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
using namespace std;
const int maxn=100005;
int a[maxn],b[maxn],ans[maxn]= {0};
int flag=0,anslen=0;
char in1[maxn],in2[maxn];
void calp() {
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	int len1=strlen(in1),len2=strlen(in2);
	for(int i=0,j=len1-1; i<len1; i++,j--) {
		a[i]=in1[j]-'0';
	}
	for(int i=0,j=len2-1; i<len2; i++,j--) {
		b[i]=in2[j]-'0';
	}
	int maxlen=(len1>len2)?len1:len2;
	flag=0;
	for(int i=0; i<len1; i++) {
		for(int j=0; j<len2; j++) {
			ans[j+flag]+=(a[i]*b[j]);
			if(ans[j+flag]>=10) {
				int temp=ans[j+flag]/10;
				ans[j+flag+1]+=temp;
				ans[j+flag]%=10;
			}
		}
		flag++;
	}
	anslen=maxlen+flag;
}
int main() {
	hh;
	memset(in1,0,sizeof(in1));
	memset(in2,0,sizeof(in2));
	cin>>in1;
	cin>>in2;
	calp();
	for(int i=anslen; i>=0; i--) {
		if(ans[i]!=0) {
			for(; i>=0; i--) {
				cout<<ans[i];
			}
		}
	}
	cout<<endl;
	return 0;
}

后来又写了一份,比上一份好看一些

#include<bits/stdc++.h>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
using namespace std;
const int maxn=1000005;
string str1,str2;
int a[maxn],b[maxn],ans[maxn];
int main() {
	hh;
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(ans,0,sizeof(ans));
	cin>>str1>>str2;
	int len1=str1.length();
	int len2=str2.length();
	//逆序,字符改整形储存
	for(int i=0,j=len1-1; i<len1; i++,j--) {
		a[i]=str1[j]-'0';
	}
	for(int i=0,j=len2-1; i<len2; i++,j--) {
		b[i]=str2[j]-'0';
	}
	//模拟手算
	//int big_len=(len1>len2)?(len1):len2;
	int pos;
	for(int i=0; i<len1; i++) {
		for(int j=0,k=i; j<len2; j++,k++) {
			ans[k]+=a[i]*b[j];
			if(ans[k]>=10) {
				ans[k+1]+=ans[k]/10;
				ans[k]%=10;
			}
			pos=k;
		}
	}
	//输出
	for(int i=pos+1; i>=0; i--) {
		if(ans[i]!=0) {
			for(; i>=0; i--) {
				cout<<ans[i];
			}
		}
	}
	return 0;
}

每次考前必须要来这里过一遍大数乘法!

#include<bits/stdc++.h>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int maxn=100005;
string inp_a,inp_b;
int a[maxn]={0},b[maxn]={0},ans[maxn]={0};
void mult(){
	int lena=inp_a.length();
	int lenb=inp_b.length();
	for(int i=0,j=lena-1;i<lena;i++,j--){
		a[j]=inp_a[i]-'0';
	}
	for(int i=0,j=lenb-1;i<lenb;i++,j--){
		b[j]=inp_b[i]-'0';
	}
	int larg_pos=0;
	for(int i=0;i<lena;i++){
		int pos=i;
		for(int j=0;j<lenb;j++){
			ans[pos++]+=(a[i]*b[j]);
			if(larg_pos<pos){
				larg_pos=pos;
			}
		}
	}
	
	for(int i=0;i<larg_pos;i++){
		if(ans[i]>=10){
			ans[i+1]+=ans[i]/10;
			ans[i]%=10;
		}
	}
	for(int i=larg_pos+10;i>=0;i--){
		if(ans[i]!=0){
			for(;i>=0;i--){
				cout<<ans[i];		
			}
		}
	}
}
int main(){
	hh;
	cin>>inp_a;
	cin>>inp_b;
	mult(); 
	cout<<endl;
	return 0;
}

PS:蓝桥杯国赛加油! ---19/5/24

 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区