特殊乘法

题目描述

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

输入描述:

两个小于1000000000的数

输出描述:

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

示例1

输入

123 45

输出

54

解题思路

题目的意思是要对两个整数,分别取其某一位数相乘再相加。

那么首先使用string 类型存放两个数,再将其用取字符串中字符的方式,将每一位数(字符)取出,再转化为对应的整数。

 1 #include <stdio.h>
 2 #include <iostream>
 3 #include <string>
 4 
 5 using namespace std;
 6 int main()
 7 {
 8     string x,y;
 9     while(cin >> x >> y)
10     {
11         int sum = 0;
12         for(int i = 0;i<x.length();i++)
13             for(int j = 0;j<y.length();j++)
14             {
15                 sum = (x[i]-'0')* (y[j]-'0') + sum;
16             } 
17         cout << sum;
18     }
19 }

Summary

1、对于该题目还有其他的解法,但是使用string类型来存放数据是占用内存较小的方式。

2、对于C++中的string类型,取其字符串长度的方式是 x.length()

3、将字符类型整数转化为对应的整数的方式就是直接减去'0' 字符。


在这里我总结一下C++中, sizeof(),strlen(),size(),length() 的区别

sizeof()

sizeof():返回所占总空间的字节数

sizeof(...)是运算符,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。

strlen()

strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符''。返回的长度大小不包括''。

size() 和 length()

c++中的size()和length()没有区别,都是用来计算string类对象的长度,假如有一个string对象str,则str.size()和str.length()会返回它们的长度,它们的作用是相同的


c/c++ strlen(str)str.length()str.size()都可以求字符串长度。
其中str.length()和str.size()是用于求string类对象的成员函数
strlen(str)是用于求字符数组的长度,其参数是char*。

原文地址:https://www.cnblogs.com/jiashun/p/newcode14.html