高精度加乘与矩阵旋转小结

高精度加法

建立两个数组分别存储两个数字,还有一个数组来存储他们的和

数组倒置后直接相加

c[i]=a[i]+b[i];

此时并未考虑进位,我们现在进位

if(c[i]>9)

c[i+1]+=c[i]/10,c[i]=c[i]%10;

最后的一步很重要

考虑到最后一位的进位可能会为0

倒置输出后就会多一位数

所以要判断最后一位是否为0

if(c[i+1]>0) l++;

最后以l的长度输出就好了(l=i+1或i)

高精度乘法

仍然是创建两个数组来存储两个乘数,再创建一个数组来存储积

两个for循环来进行第一步相乘(不考虑进位)

for(int i=0;i<n;i++)

for(int j=0;j<m;j++)

c[i+j]=c[i]*c[j];

其中i是用来错位相加的

现在来进位

for(int k=0;k<l;k++)

c[k+1]+=c[k]/10,c[k]=c[k]%10;

最后还是一样

0的问题

if(c[k+1]>0) l++;

最后以l的长度输出就好了(l=k+1或k)

矩阵旋转

顺时针旋转

换列再对换

swap(a[i][j],a[n-1-i][j]);

swap(a[i][j],a[j][i]);

逆时针旋转

换行再对换

swap(a[i][j],a[i][n-1-j]);

swap(a[i][j],a[j][i]);

最后附上顺时针旋转的代码

#include<iostream>
using namespace std;
void swap(int& i, int& j)
{
	int temp = 0;
	temp = i;
	i = j;
	j = temp;

}
int main()
{
	int a[3][3];
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cin >> a[i][j];
		}
	}
	for (int i = 0; i < 3; i++)
	{
		for (int j =i+1; j < 3; j++)
		{
			swap(a[i][j], a[j][i]);
		}
	}
	for (int j= 0; j < 2; j++)
	{
		for (int i = 0; i < 3; i++)
		{
			swap(a[i][j], a[i][2 - j]);
		}
	}
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << a[i][j] << ' ';
		}
		cout << endl;
	}
}

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值