九度OJ 题目1050:完数
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1711 解决:621
题目描述:
求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。
输入:
测试数据有多组,输入n,n数据范围不大。
输出:
对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。
样例输入:
6
样例输出:
6
九度OJ 题目1051:数字阶梯求和
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1502 解决:455
题目描述:
给定a和n,计算a+aa+aaa+a...a(n个a)的和。
输入:
测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。
输出:
对于每组输入,请输出结果。
样例输入:
1 10
样例输出:
1234567900
九度OJ 题目1052:找x
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1131 解决:573
题目描述:
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。
输入:
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
输出:
对于每组输入,请输出结果。
样例输入:
2
1 3
0
样例输出:
-1
九度OJ 题目1053:互换最大最小数
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1345 解决:526
题目描述:
输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。
输入:
测试数据有多组,输入n(1<=n<=20),接着输入n个数。
输出:
对于每组输入,输出交换后的结果。
样例输入:
2
1 3
样例输出:
3 1
九度OJ 题目1054:字符串内排序
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1040 解决:551
题目描述:
输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。
输入:
测试数据有多组,输入字符串。
输出:
对于每组输入,输出处理后的结果。
样例输入:
bacd
样例输出:
abcd
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1711 解决:621
题目描述:
求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。
输入:
测试数据有多组,输入n,n数据范围不大。
输出:
对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。
样例输入:
6
样例输出:
6
用最笨的算法求的因子 并不好 虽然本题也说了n不大 即也不意在考察高效求解因子 但还是得学会高效的方法 留给以后吧
#include <memory.h>
#include <iostream>
using namespace std;
int perfect[10], num;
void init(){
int i, j, k, sum;
num=0;
for( i=6; i<10000; i++ ){
sum = 1;
for( j=2; j<=i/2; j++ )
if( i%j==0 ) sum += j;
if( i==sum )
perfect[num++] = i;
}
}
int main()
{
int i, j, k, m, n;
memset(perfect,0,sizeof(perfect));
init();
while( cin >> n ){
if( n < 6 )
cout << "\n";
else{
cout << "6";
i = 0;
while( perfect[++i]<=n && i<num )
cout << " " << perfect[i];
cout << endl;
}
}
return 0;
}
九度OJ 题目1051:数字阶梯求和
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1502 解决:455
题目描述:
给定a和n,计算a+aa+aaa+a...a(n个a)的和。
输入:
测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。
输出:
对于每组输入,请输出结果。
样例输入:
1 10
样例输出:
1234567900
简单的大数运算 我的一贯思路都是本题这种:开始时每位都可以大些 然后从低位向高位撸一遍处理进位
#include <iostream>
using namespace std;
int c[101];
void init( int a, int n ){
int i, carry;
for( i=1; i<=n; i++ )
c[i] = a * i;
carry = 0;
for( i=n; i>=1; i-- ){
c[i] += carry;
carry = c[i] / 10;
c[i] %= 10;
}
c[0] = carry;
}
int main()
{
int i, j, k, m, n;
int a;
while( cin >> a >> n ){
init(a,n);
if( c[0]!=0 )
cout << c[0];
for( i=1; i<=n; i++ )
cout << c[i];
cout << endl;
}
return 0;
}
九度OJ 题目1052:找x
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1131 解决:573
题目描述:
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。
输入:
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
输出:
对于每组输入,请输出结果。
样例输入:
2
1 3
0
样例输出:
-1
还有比这题更基础的题目么?
#include <iostream>
using namespace std;
int c[200];
int main()
{
int i, j, k, m, n;
int x;
while( cin >> n ){
for( i=0; i<n; i++ )
cin >> c[i];
cin >> x;
bool found = 0;
for( i=0; i<n; i++ )
if( x==c[i] ){
found = 1;
break;
}
if(found)
cout << i << endl;
else cout << "-1\n";
}
return 0;
}
九度OJ 题目1053:互换最大最小数
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1345 解决:526
题目描述:
输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。
输入:
测试数据有多组,输入n(1<=n<=20),接着输入n个数。
输出:
对于每组输入,输出交换后的结果。
样例输入:
2
1 3
样例输出:
3 1
#include <iostream>
using namespace std;
int a[20];
int main()
{
int i, j, k, m, n;
int Min, Max, minIndex, maxIndex;
while( cin >> n ){
cin >> a[0];
Max = Min = a[0];
minIndex = maxIndex = 0;
for( i=1; i<n; i++ ){
cin >> a[i];
if( a[i] > Max ){
Max = a[i];
maxIndex = i;
}
else if( a[i] < Min){
Min = a[i];
minIndex = i;
}
}
a[maxIndex] = Min;
a[minIndex] = Max;
for( i=0; i<n-1; i++ )
cout << a[i] << " ";
cout << a[n-1] << endl;
}
return 0;
}
九度OJ 题目1054:字符串内排序
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1040 解决:551
题目描述:
输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。
输入:
测试数据有多组,输入字符串。
输出:
对于每组输入,输出处理后的结果。
样例输入:
bacd
样例输出:
abcd
我很可耻的直接用的STL 于是它成了我的迄今为止最短的AC程序(大概
#include <algorithm>
#include <string>
#include <iostream>
using namespace std;
string s;
int main()
{
int i, j, k, m, n;
int Min, Max, minIndex, maxIndex;
while( cin >> s ){
n = s.length();
char *p = &s[0];
sort(p,p+n);
cout << s << endl;
}
return 0;
}