题目描述
给定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 纸,依此类推。
输入纸张的名称,请输出纸张的大小。输入格式
输入一行包含一个字符串表示纸张的名称。
该名称一定是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;
- }