问题 B: A+B、问题 C: 特殊乘法

每日刷题(八十八)

快过年了还不给个三连吗?✌ (>‿◠)✌

问题 B: A+B

题目描述

给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。

输入

输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-109 < A,B < 109)。

输出

请计算A+B的结果,并以正常形式输出,每组数据占一行。

样例输入

-234,567,890 123,456,789
1,234 2,345,678

样例输出

-111111101
2346912

思路:将带有逗号的数据转换为正常数,这里需要用到sscanf()函数

int sscanf ( const char * s, const char * format, …);

具体可以看官方参考文档
也可以看这篇博客sscanf的用法

这里还是给一个sscanf的小例子

#include<iostream>
using namespace std;

int main()
{
    
    
	char a[10] = {
    
    '1', '2', '3'};
	int m;
	sscanf(a, "%d", &m);
	cout << m;
	return 0;
}

运行结果:
在这里插入图片描述
很显然,sscanf是将字符串内容转换为数字的不二之选,当然字符串里的必须是纯数,这就有点像JAVA中的parseInt(String s),即返回用十进制参数表示的整数值

详细C++代码如下:

#include<cstdio>
#include<string.h>

int main()
{
    
    
	char a[10], b[10], a2[10], b2[10];
	int aLen, bLen;
	int m, n;
	while(scanf("%s %s", a, b) != EOF)
	{
    
    
		aLen = strlen(a);
		bLen = strlen(b);
		int j = 0;
		for(int i = 0; i < aLen; i++)
		{
    
    
			if(a[i] >= '0' && a[i] <= '9')
			{
    
    
				a2[j++] = a[i];
			}
		}
		a2[j] = '\0';
		sscanf(a2, "%d", &m);
		if(a[0] == '-')
			m = -m;
		
		j = 0;
		for(int i = 0; i < bLen; i++)
		{
    
    
			if(b[i] >= '0' && b[i] <= '9')
			{
    
    
				b2[j++] = b[i];
			}
		}
		b2[j] = '\0';
		sscanf(b2, "%d", &n);
		if(b[0] == '-')
			n = -n;
		
		int conseq = 0;
		conseq = n + m;
		printf("%d\n", conseq);
	}
	return 0;
} 

样例运行结果如下:
在这里插入图片描述

问题 C: 特殊乘法

题目描述

写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例:123 * 45 = 1 * 4 + 1 * 5 + 2 * 4 + 2 * 5 + 3 * 4 + 3 * 5

输入

两个小于1000000000的数

输出

输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。

样例输入

24 65
42 66666
3 67

样例输出

66
180
39

详细C++代码如下:

#include<iostream>
using namespace std;

int main()
{
    
    
	int a[10], b[10];
	int m, n;
	int u, v;
	
	while(cin >> m >> n)
	{
    
    
		u = m;
		v = n;
		int i = 0;
		while(m != 0)
		{
    
    
			a[i++] = m % 10;
			m /= 10;
		}
		int j = 0;
		while(n != 0)
		{
    
    
			b[j++] = n % 10;
			n /= 10;
		}
		
		int cnt = 0;		
		for(int k = 0; k < i; k++)
		{
    
    
			for(int h = 0; h < j; h++)
			{
    
    
				cnt += a[k] * b[h];
			}
		} 
		if(u == 0 || v == 0)
			cnt = 0;
		cout << cnt << endl;
	}
	
	
	return 0;
}

样例运行结果如下:
在这里插入图片描述

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

猜你喜欢

转载自blog.csdn.net/qq_44631615/article/details/112346078