输入正整数n(1~18),求所有两位数的两个数字和为n的数的和
时间: 2023-05-29 22:04:27 浏览: 65
算法1:暴力枚举
直接枚举所有两位数,判断它们的两个数字和是否等于n,如果是则累加到答案中。
时间复杂度:O(1)
C++ 代码
```
#include <iostream>
using namespace std;
int main()
{
int n, sum = 0;
cin >> n;
for (int i = 10; i <= 99; i++)
{
int a = i / 10, b = i % 10;
if (a + b == n)
sum += i;
}
cout << sum << endl;
return 0;
}
```
算法2:数学方法
根据数学知识,两个数的个位数之和是确定的,可以先求出个位数为0~9的两位数的和,再根据n计算出个位数之和对应的两位数的和。
时间复杂度:O(1)
C++ 代码
```
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int sum = (10 + 11 + 12 + ... + 97 + 98 + 99) * (n / 2) + ((n % 2 == 0) ? 0 : 45 * ((n + 1) / 2));
cout << sum << endl;
return 0;
}
```
相关问题
输入正整数n(1~18),求所有两位数的两个数字和为n的数的和。
很高兴为您解答这个问题!
代码如下:
```lua
local sum = 0
local n = io.read()
for i=1,n-1 do
for j=0,9 do
if i+j==n then
sum = sum + i*10+j
end
end
end
print(sum)
```
这段代码可以计算所有两位数中,两个数字和为输入正整数n的数的和。
但需要注意的是,这段代码只适用于n在1-18的情况下,如果n大于18,将会出现错误的结果。
请问还有什么需要帮助的吗?
输入正整数n(1~18),求所有两位数的两个数字和为n的数的和。,使用循环
好的,让我来回答这个问题!请看下面的代码:
```python
n = int(input("请输入一个正整数n(1~18): "))
s = 0
for i in range(10, 100):
if (i // 10 + i % 10) == n:
s += i
print("所有两位数的两个数字和为{}的数的和为{}".format(n,s))
```
这段 Python 代码可以计算出所有两位数中,两个数字之和为输入的正整数 n 的数的和。我们使用一个 for 循环,枚举所有的两位数,并对于每个数字,判断它的十位数和个位数之和是否等于 n。如果是的话,我们就将这个数加入到答案中去,最后输出答案即可。希望能对你有所帮助,如果你有其它问题,随时可以问我!