PAT Basic 1056. 组合数的和

发布时间 2023-03-31 11:09:03作者: 十豆加日月

PAT Basic 1056. 组合数的和

1. 题目描述:

给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。

2. 输入格式:

输入在一行中先给出 N(1 < N < 10),随后给出 N 个不同的非 0 个位数字。数字间以空格分隔。

3. 输出格式:

输出所有可能组合出来的2位数字的和。

4. 输入样例:

3 2 8 5

5. 输出样例:

330

6. 性能要求:

Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB

思路:

除草题,找出排列组合的规律即可,这里\(N\)个数字的话,每个数字在十位和个位都会各出现\(N-1\)次,所以直接将每个数字乘以11求和,最后再乘以\(N-1\)即可。

这里因为数字不可以重复使用,所以乘以\(N-1\),否则应该乘以\(N\),一开始我写成乘以\(N\)。。。

My Code:

#include <stdio.h>

int main(void)
{
    int numCount = 0;
    int res = 0;
    int i=0; // iterator
    int temp=0;
    
    scanf("%d", &numCount);
    for(i=0; i<numCount; ++i)
    {
        scanf("%d", &temp);
        res += (temp*11);
    }
    res *= numCount-1;
    
    printf("%d\n", res);
    
    return 0;
}