Discuz! Board

 找回密码
 立即注册
查看: 440|回复: 0

3.19 高精度

[复制链接]

54

主题

66

帖子

574

积分

高级会员

Rank: 4

积分
574
发表于 2023-3-19 17:01:37 | 显示全部楼层 |阅读模式
[C++] 纯文本查看 复制代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
	char a[100],b[100];
	int a1[100],b1[100],c[100];
	cin>>a>>b;
	int jw=0;
	int al=strlen(a),bl=strlen(b);
	int len=max(strlen(a),strlen(b))
	for(int i=al-1;i>=0;i++)
	{
		a1[i]=a[al-i-1]-'0';
	}
	for(int i=bl-1;i>=0;i++)
	{
		b1[i]=b[bl-i-1]-'0';
	}
	for(int i=0;i<len;i++)
	{
		c[i]=(a1[i]+b1[i]+jw)%10;
		jw=(a1[i]+b1[i]+jw)/10;
	}
	int flag=0;
}

[C++] 纯文本查看 复制代码
void g_2to8()//高精度2进制转8进制 
{
	char a[10000];
	int b[3333];
	int cnt=0; 
	cin>>a;//输入 
	for(int i=strlen(a)-1;i>=0;i--)
	{
		b[cnt/3]+=(a[i]-'0')*pow(2,(strlen(a)-1-i)%3);//b每三位加上a[i]减字符0,乘2的几次方 
		cnt++;//cnt加1 
	} 
	for(int i=(cnt-1)/3;i>=0;i--)//i从(cnt-1)开始 
	cout<<b[i];//输出 
} 


void g_8to2()//高精度8进制转2进制 
{
	int n=0;
	char a[1000];
	char b[3000];
	cin>>a;//输入 
	
	for(int i=0;i<strlen(a);i++)
	{
		b[n+2]=(a[i]-'0')%2+'0';
		b[n+1]=((a[i]-'0')/2)%2+'0';
		b[n]=((a[i]-'0')/2/2)%2+'0';
		//把八进制每一位分成3位二进制 
		n+=3;//计数器加3 
	}
	//cout<<b<<endl;
	int flag=1;
	for(int i=0;i<n;i++)
	{
		if((flag==1)&&(b[i]=='0')){}//如果是b[i]第一位且等于0 下一轮循环 
		else
		{
			cout<<b[i];//输出 
			flag=0;//标志位等于0 
		}	
	}
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-2-13 04:51 , Processed in 0.048643 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表