问题描述
这题想得分吗?想,请输出“yes”;不想,请输出“no”。
输出格式
输出包括一行,为“yes”或“no”。
分析:智障题目。。。
1 2 3 4 5 6 |
#include <iostream> using namespace std; int main() { cout << "yes"; return 0; } |
问题描述
这题想得分吗?想,请输出“yes”;不想,请输出“no”。
输出格式
输出包括一行,为“yes”或“no”。
分析:智障题目。。。
1 2 3 4 5 6 |
#include <iostream> using namespace std; int main() { cout << "yes"; return 0; } |
问题描述
输入10个整数组成的序列,要求对其进行升序排序,并去掉重复元素。
输入格式
10个整数。
输出格式
多行输出,每行一个元素。
样例输入
2 2 3 3 1 1 5 5 5 5
样例输出
1
2
3
5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include <algorithm> using namespace std; int main() { int a[10]; for(int i = 0; i < 10; i++) { cin >> a[i]; } sort(a, a+10); cout << a[0] << endl; for(int i = 1; i < 10; i++) { if(a[i] != a[i-1]) { cout << a[i] << endl; } } return 0; } |
问题描述
在一个有限的正整数序列中,有些数会多次重复出现在这个序列中。
如序列:3,1,2,1,5,1,2。其中1就出现3次,2出现2次,3出现1 次,5出现1次。
你的任务是对于给定的正整数序列,从小到大依次输出序列中出现的数及出现的次数。
输入格式
第一行正整数n,表示给定序列中正整数的个数。
第二行是n 个用空格隔开的正整数x,代表给定的序列。
输出格式
若干行,每行两个用一个空格隔开的数,第一个是数列中出现的数,第二个是该数在序列中出现的次数。
样例输入
12
8 2 8 2 2 11 1 1 8 1 13 13
样例输出
1 3
2 3
8 3
11 1
13 2
数据规模和约定
数据:n<=1000;0<x<=1000,000。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> int a[1000001]; using namespace std; int main() { int n; cin >> n; for(int i = 0; i < n; i++) { int temp; cin >> temp; a[temp]++; } for(int i = 0; i <= 1000000; i++) { if(a[i] != 0) { cout << i << " " << a[i] << endl; } } return 0; } |
问题描述
给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。
输入格式
第一行包含一个数n,表示序列长度。
第二行包含n个正整数,表示给定的序列。
第三个包含一个正整数m,表示询问个数。
接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。
输出格式
总共输出m行,每行一个数,表示询问的答案。
样例输入
5
1 2 3 4 5
2
1 5 2
2 3 2
样例输出
4
2
数据规模与约定
对于30%的数据,n,m<=100;
对于100%的数据,n,m<=1000;
保证k<=(r-l+1),序列中的数<=106。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <iostream> #include <algorithm> #include <vector> using namespace std; int cmp(int a, int b){return a > b;} int main() { int n, m; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } cin >> m; vector<int> result(m); for (int i = 0; i < m; i++) { int l, r, k; cin >> l >> r >> k; int *temp = new int [n]; for(int j = 0; j < n; j++) { temp[j] = a[j]; } sort(temp + l - 1, temp + r, cmp); result[i] = temp[l - 1 + k - 1]; delete [] temp; } for (int i = 0; i < m; i++) { cout << result[i] << endl; } return 0; } |
问题描述
输入一个正整数n,输出n!的值。
其中n!=1*2*3*…*n。
算法描述
n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。
将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。
首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。
输入格式
输入包含一个正整数n,n<=1000。
输出格式
输出n!的准确值。
样例输入
10
样例输出
3628800
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <iostream> using namespace std; int main() { int n; cin >> n; int A[10000] = {1}; for (int i = 1; i <= n; i++) { for (int j = 0; j < 10000; j++) { A[j] = A[j] * i; } for (int j = 0; j < 10000; j++) { if (A[j] >= 9) { A[j + 1] =A[j + 1] + A[j] / 10; A[j] = A[j] % 10; } } } int t = 0; for (int i = 9999; i >= 0; i--) { if (A[i] != 0) { t = i; break; } } for (int i = t; i >= 0; i--) { cout << A[i]; } return 0; } |
问题描述
输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。
算法描述
由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。
定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。
计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。
最后将C输出即可。
输入格式
输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。
输出格式
输出一行,表示a + b的值。
样例输入
20100122201001221234567890
2010012220100122
样例输出
20100122203011233454668012
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include <iostream> #include <string> using namespace std; int main() { string a; string b; int A[100] = {0}; int B[100] = {0}; cin >> a >> b; int lena = a.length(), lenb = b.length(); int j = 0; for (int i = lena - 1; i >= 0; i--) { A[j++] = a[i] - '0'; } j = 0; for (int i = lenb - 1; i >= 0; i--) { B[j++] = b[i] - '0'; } int C[101] = {0}; int temp = 0; for (int i = 0; i < 100; i++) { C[i] = A[i] + B[i] + temp; temp = C[i] / 10; C[i] = C[i] % 10; } int max = lena; if (max < lenb) max = lenb; max = max - 1; if (C[max + 1] != 0) max = max + 1; for (int i = max; i >= 0; i--) { cout << C[i]; } return 0; } |