zoukankan      html  css  js  c++  java
  • 洛谷 P1566 加等式

    题目描述

    对于一个整数集合,我们定义“加等式”如下:集合中的某一个元素可以表示成集合内其他元素之和。如集合{1,2,3}中就有一个加等式:3=1+2,而且3=1+2 和3=2+1是相同的加等式,也是这个集合唯一的加等式。给定一个整数集合,编程找出其所有的加等式的个数

    输入输出格式

    输入格式:

     

    第一行为t,表示测试数据组数。(1≤t≤10);

    接下来t 行,每行表示一组测试数据。其中第一个数m(1≤m≤30),表示集合元素的个数,接下来m 个不同的整数x 分别表示集合元素(1≤x≤1000)。

     

    输出格式:

     

    对于每个输入数据,输出一个整数,表示其中加等式的个数。

     

    输入输出样例

    输入样例#1: 复制
    3
    3 1 2 3
    3 1 2 5
    6 1 2 3 5 4 6
    输出样例#1: 复制
    1
    0
    7
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int T,m,ans,Max;
    int num[31],f[1010];
    int main(){
        scanf("%d",&T);
        while(T--){
            scanf("%d",&m);
            for(int i=1;i<=m;i++){
                scanf("%d",&num[i]);
                Max=max(Max,num[i]);
            }
            f[0]=1;
            for(int i=1;i<=m;i++)
                for(int j=Max;j>=num[i];j--)
                    f[j]+=f[j-num[i]];
            for(int i=1;i<=m;i++)
                ans+=f[num[i]];
            cout<<ans-m<<endl;
            memset(f,0,sizeof(f));ans=0;
        } 
    }
    100
     
  • 相关阅读:
    文章分类
    多项式笔记(二)
    P7102 [w3R1] 算
    P3711 仓鼠的数学题
    常见特殊数的多项式求法
    P4091 [HEOI2016/TJOI2016]求和
    CF961G Partitions
    P4609 [FJOI2016]建筑师
    P5401 [CTS2019]珍珠
    P5162 WD与积木
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/9724844.html
Copyright © 2011-2022 走看看