文章目录
1. 乘方计算
给出一个整数 a 和一个正整数n,求乘方
a
n
a^n
an。
输入:
一行,包含两个整数 a 和 n 。-1000000 <= a <= 1000000, 1 <= n <= 10000。
输出:
一个整数,即乘方结果。题目保证最终结果的绝对值不超过1000000 。
样例输入
2 3
样例输出
8
题解:
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int a,n;
cin >> a >>n;
int result = a;
for(int i=0;i<n-1;++i)
result *=a;
cout << result;
return 0;
}
2. 输入若干个整数求最大值
输入若干个整数(可正可负,不超过 int 的表示范围),输出最大值。
样例输入
-100 -20 20 -2
样例输出
20
题解:
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n,max;
bool first = true; //输入的是否是第一个数
while(cin >> n){
if(first){
max=n;
first=false;
}
else{
if(n>max)
max=n;
}
}
cout << max <<endl;
return 0;
}
3. 输入至少2个整数,求最大值和第二大值
样例输入
1 5 6 3 4 6
样例输出
6 6
样例输入
1 5 6 3 4
样例输出
6 5
题解:
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n,max1,max2;
int num=0;//输入的是第几个数
while(cin >> n){
++num;
if(num == 1)
max1=n;
else if(num == 2){
if(n > max1){
max2 = max1;
max1 = n;
}
else
max2 = n;
}
else{ // num > 2
if(n >= max1){
max2 = max1;
max1 = n;
}
else if(n > max2)
max2 = n;
}
}
cout << max1 << " " << max2 << endl;
return 0;
}
4. 斐波那契数列
斐波那契数列是指这样的数列:数列的第一个和第二个数都为 1,接下来的每个数都等于前面 2 个数之和。给出一个正整数 k,要求斐波那契数列中第 k 个数是多少。
样例输入
19
样例输出
4181
题解:
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int a1=1,a2=1;int k;
cin >> k;
if(k == 1 || k == 2)
cout << 1 << endl;
else{
int sum;
for(int i=0;i<k-2;++i){
sum = a1+a2;
a1 = a2;
a2 = sum;
}
cout << a2 << endl;
}
return 0;
}
递归解法
int Fib(int n){
if(n==1 || n==2)
return 1;
else
return Fib(n-1)+Fib(n-2);
}
5. 求阶乘的和
给定正整数 n,求不大于 n 的正整数的阶乘的和(即求1!+2!+3!+…+n!)
输入:
输入有一行,包含一个正整数 n(1<n<12)。
输出:
输出有一行:阶乘的和。
样例输入
5
样例输出
153
题解(改进前):
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n;
cin >> n;
int sum = 0;
for(int i=1;i<=n;++i){
int factorial=1; //存放i阶乘
for(int j=1;j<=i;++j)
factorial *=j; //此操作数1+2+3+...+n次
sum += factorial;
}
cout << sum;
return 0;
}
题解(改进后):
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n;
cin >> n;
int sum = 0;
int factorial = 1;
for(int i=1;i<=n;++i){
factorial *=i;
sum += factorial;
}
cout << sum;
return 0;
}
6. 输入正整数n(n>=2),求不大于n的全部素数(质数)
题解(改进前):
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n;
cin >> n;
for(int i=2;i<=n;++i){ //每次判断i是否是质数
int k;
for(k=2;k<i;++k){
if(i%k == 0)
break;
}
if(k == i) //k==i 说明没有执行过break
cout << i << endl;
}
return 0;
}//此解法做了没必要的尝试, k 大于 i的平方根后就不必再试
题解(改进后):
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n;
cin >> n;
cout << 2 << endl;
for(int i=3;i<=n;i+=2){ //每次判断i是否是质数
int k;
for(k=3;k<i;k+=2){
if(i%k == 0)
break;
if(k*k > i)
break;
}
if(k*k > i)
cout << i << endl;
}
return 0;
}