一【题目难度】
- 乙级
二【题目编号】
- 1056 组合数的和 (15 分)
三【题目描述】
- 给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。
四【题目示例】
-
输入格式:
输入在一行中先给出 N(1 < N < 10),随后给出 N 个不同的非 0 个位数字。数字间以空格分隔。 -
输出格式:
输出所有可能组合出来的2位数字的和。 -
输入样例:
3 2 8 5 -
输出样例:
330
五【解题思路】
- 这个题比较简单,一次就AC了。具体思路如下:
①:用数组接收所有数据
②:然后用每个数字做一次头部遍历,拼接为二位数,注意每次得到一个二位数,都要还原之前的头部,还要注意循环遍历的时候不能和自己组合,然后把每次的结果相加
③:最后输出结果即可
六【最终得分】
- 15分
七【代码实现】
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,res = 0;
int* nums = (int *)malloc(sizeof(int)*n);
scanf("%d",&n);
for(int i = 0;i<n;i++)
{
scanf("%d",&nums[i]);
}
for(int i = 0;i<n;i++)
{
int temp = nums[i] * 10;
for(int j = 0;j<n;j++)
{
if(j == i)
{
continue;
}
temp += nums[j];
res += temp;
temp = nums[i] * 10;
}
}
printf("%d",res);
return 0;
}