UVa 10177 - (2/3/4)-D Sqr/Rects/Cubes/Boxes?

本文分享了一道UVa在线编程题目的解题思路与代码实现,重点在于通过推导公式来计算特定图形组合的数量,并解决了编译环境中long long类型输出格式的问题。
曾经放了好久的题,今天A掉了,其实就是推公式了,唯一觉得被坑了就是在windows下long long占位符是%I64d,而UVa用的貌似是linux,为此WR了一次,查了
一下,改成%lld后AC了。
题目解法:
对于正方形正方块来说,比较好找找规律,比如边长是4的二维下的正方形就是:1+4+9+25=39.即:前面所有边长的平方和,三维四维的相应的就是三次方和四次方。
对于边不同长的长方形长方体来说,就要推公式:
可以发现,一个图形中,边长为1的边长在每条最大的边上有n个可选位置,比如:边长为2(即:输入n=2时),每条最大边上有n(n=2)个边长为1的小边的可选位置,每条最大边上有n-1(n-1=1)个边长为2的小边的可选位置,以此类推...所以矩形所有可能边长个数是{n +(n-1)+...+2+1} = n*(1+n)/2,从中任意选出两种可能
就可以组成一个矩形。之后再减去,可能出现的边长相等的情况,便为长方形的个数 ~

代码如下:

#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>

using namespace std;

int main()
{
#ifdef test
    freopen("in.txt", "r", stdin);
#endif
    int num;
    long long int s2, r2, s3, r3, s4, r4;
    while(scanf("%d", &num) != EOF)
    {
        s2 = r2 = s3 = r3 = s4 = r4 = 0;
        for(int i = 1; i <= num; i++)
        {
            s2 += i * i;
            s3 += i * i * i;
            s4 += i * i * i * i;
        }
        long long int m = num * (num + 1) /2;
        r2 = m * m - s2;
        r3 = m * m *m - s3;
        r4 = m * m * m * m -s4;
        printf("%lld %lld %lld %lld %lld %lld\n", s2, r2, s3, r3, s4, r4);
    }
    return 0;
}


6_v1r3_server/verify_area_key//lib/libjansson.a -Wl,--no-whole-archive -lpthread -lm /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-armv8-mont.o): in function `bn_mul_mont&#39;: (.text+0x0): multiple definition of `bn_mul_mont&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-armv8-mont.o):(.text+0x0): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-bn_asm.o): in function `bn_mul_add_words&#39;: bn_asm.c:(.text+0x0): multiple definition of `bn_mul_add_words&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-bn_asm.o):bn_asm.c:(.text+0x0): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-bn_asm.o): in function `bn_mul_words&#39;: bn_asm.c:(.text+0x140): multiple definition of `bn_mul_words&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-bn_asm.o):bn_asm.c:(.text+0x140): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-bn_asm.o): in function `bn_sqr_words&#39;: bn_asm.c:(.text+0x234): multiple definition of `bn_sqr_words&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-bn_asm.o):bn_asm.c:(.text+0x234): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-bn_asm.o): in function `bn_div_words&#39;: bn_asm.c:(.text+0x2e4): multiple definition of `bn_div_words&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-bn_asm.o):bn_asm.c:(.text+0x2e4): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-bn_asm.o): in function `bn_add_words&#39;: bn_asm.c:(.text+0x410): multiple definition of `bn_add_words&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-bn_asm.o):bn_asm.c:(.text+0x410): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-bn_asm.o): in function `bn_sub_words&#39;: bn_asm.c:(.text+0x520): multiple definition of `bn_sub_words&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-bn_asm.o):bn_asm.c:(.text+0x520): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-bn_asm.o): in function `bn_mul_comba8&#39;: bn_asm.c:(.text+0x680): multiple definition of `bn_mul_comba8&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-bn_asm.o):bn_asm.c:(.text+0x680): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-bn_asm.o): in function `bn_mul_comba4&#39;: bn_asm.c:(.text+0xe10): multiple definition of `bn_mul_comba4&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-bn_asm.o):bn_asm.c:(.text+0xe10): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-bn_asm.o): in function `bn_sqr_comba8&#39;: bn_asm.c:(.text+0x1000): multiple definition of `bn_sqr_comba8&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-bn_asm.o):bn_asm.c:(.text+0x1000): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-bn_asm.o): in function `bn_sqr_comba4&#39;: bn_asm.c:(.text+0x1620): multiple definition of `bn_sqr_comba4&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-bn_asm.o):bn_asm.c:(.text+0x1620): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-des_enc.o): in function `DES_encrypt1&#39;: des_enc.c:(.text+0x0): multiple definition of `DES_encrypt1&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-des_enc.o):des_enc.c:(.text+0x0): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-des_enc.o): in function `DES_encrypt2&#39;: des_enc.c:(.text+0x12b0): multiple definition of `DES_encrypt2&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-des_enc.o):des_enc.c:(.text+0x12b0): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-des_enc.o): in function `DES_encrypt3&#39;: des_enc.c:(.text+0x24c0): multiple definition of `DES_encrypt3&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-des_enc.o):des_enc.c:(.text+0x24c0): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-des_enc.o): in function `DES_decrypt3&#39;: des_enc.c:(.text+0x25c0): multiple definition of `DES_decrypt3&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-des_enc.o):des_enc.c:(.text+0x25c0): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-des_enc.o): in function `DES_ncbc_encrypt&#39;: des_enc.c:(.text+0x26c0): multiple definition of `DES_ncbc_encrypt&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-des_enc.o):des_enc.c:(.text+0x26c0): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-des_enc.o): in function `DES_ede3_cbc_encrypt&#39;: des_enc.c:(.text+0x2b20): multiple definition of `DES_ede3_cbc_encrypt&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-des_enc.o):des_enc.c:(.text+0x2b20): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-des_enc.o):(.rodata+0x0): multiple definition of `DES_SPtrans&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-des_enc.o):(.rodata+0x0): first defined here /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/../lib/gcc/aarch64-none-linux-gnu/10.3.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(liblegacy-lib-fcrypt_b.o): in function `fcrypt_body&#39;: fcrypt_b.c:(.text+0x0): multiple definition of `fcrypt_body&#39;; /home/thn/at606_v1r3_server/verify_area_key//lib/libcrypto.a(libcrypto-lib-fcrypt_b.o):fcrypt_b.c:(.text+0x0): first defined here collect2: error: ld returned 1 exit status make: *** [Makefile:44: app] Error 1&#39;
最新发布
11-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值