求和
题目描述
给定n个整数a[1],a[2],...,a[n],求两两相乘再相加的和,即
S=a[1]·a[2]+a[1]·a[3]+...+a[1]·a[n]+a[2]·a[3]+...+a[2]·a[n]+...+a[n-1]·a[n]输入格式
第一行为正整数n,第二行为n个整数。
30%的数据:2≤n≤1000,1≤a[i]≤100。
100%的数据:2≤n≤200000,1≤a[i]≤1000。
输出格式
输出一个数字表示答案S。
输入样例
4
1 3 6 9
输出样例
117
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
const int N=200010;
int s[N];
int a[N];
int n;
int main()
{
cin >> n;
ll ans = 0;
for(int i = 1; i <= n; ++ i)
{
scanf("%d",&a[i]);
s[i] += s[i - 1] + a[i];
}
for(int i = n; i >= 1; i --)
{
ans += (ll) a[i] * s[i - 1];
}
printf("%lld",ans);
return 0;
}
纸张尺寸
题目描述
在ISO 国际标准中定义了A0 纸张的大小为1189mm × 841mm。
将A0 纸沿长边对折后为A1 纸,大小为841mm × 594mm。
在对折的过程中长度直接取下整(实际裁剪时可能有损耗)。
将A1 纸沿长边对折后为A2 纸,依此类推。
输入纸张的名称,请输出纸张的大小。输入格式
扫描二维码关注公众号,回复: 14169444 查看本文章输入一行包含一个字符串表示纸张的名称。
该名称一定是A0、A1、A2、A3、A4、A5、A6、A7、A8、A9 之一。
输出格式
输出两行,每行包含一个整数,依次表示长边和短边的长度。
输入样例
样例1:
A0
样例2:
A1
输出样例
样例1:
1189
841
样例2:
841
594
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
string a;
cin >> a;
if(a == "A0") printf("1189\n841");
if(a == "A1") printf("841\n594");
if(a == "A2") printf("594\n420");
if(a == "A3") printf("420\n297");
if(a == "A4") printf("297\n210");
if(a == "A5") printf("210\n148");
if(a == "A6") printf("148\n105");
if(a == "A7") printf("105\n74");
if(a == "A8") printf("74\n52");
if(a == "A9") printf("52\n37");
return 0;
}