OpenJudge NOI 1.5编程基础之循环控制(31-40题)C++ 解题思路

续上一篇文章。OpenJudge NOI 1.5 编程基础之循环控制(21-30题)C++ 解题思路_Leleprogrammer的博客-CSDN博客续上一篇文章OpenJudge NOI 1.5编程基础之循环控制(11-20题) C++ 解题思路_Leleprogrammer的博客-CSDN博客续上一篇文章。https://blog.csdn.net/leleprogrammer/article/details/127164184


目录

31 开关灯 

32 求分数序列和

33 计算分数加减表达式的值

34 求阶乘的和

35 求出e的值

36 计算多项式的值

37 雇佣兵

38 计算多项式的导函数

39 与7无关的数

40 数1的个数


31 开关灯 

#include <iostream>
using namespace std;
int a[5005],n,m;
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++) a[i]=0;
    for(int k=2;k<=m;k++){
    	for(int i=k;i<=n;i+=k) a[i]=!a[i];
	}
	int flag=0;		
	for(int i=1;i<=n;i++){
		if(!a[i]){
			if(flag==0) cout<<i;
			else cout<<","<<i;
			flag++;
		}
	}	
    return 0;
}

32 求分数序列和

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
	int n;
	cin>>n;
	double q=2,p=1;
	double result=0;
	for (int i=1;i<=n;++i) {
		if (i!=1) {
			int nq=q+p;
			int np=q;
			q=nq;
			p=np;
		}
		result+=q/p;
	}
	cout<<fixed<<setprecision(4)<<result;
	return 0;
}

33 计算分数加减表达式的值

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

int main() {
	int n;
	cin>>n;
	double result=0;
	for (int i=1;i<=n;++i) {
		result+=pow(-1,i-1)*(1.0/i);
	}
	cout<<fixed<<setprecision(4)<<result;
	return 0;
}

34 求阶乘的和

#include <iostream>
using namespace std;

int mul(int n) {
	int result=1;
	for (int i=1;i<=n;++i) {
		result*=i;
	}
	return result;
}

int main() {
	int n,result=0;
	cin>>n;
	for (int i=1;i<=n;++i) {
		result+=mul(i);
	}
	cout<<result;
	return 0;
}

35 求出e的值

#include <iostream>
#include <iomanip>
using namespace std;

double mul(double n) {
	double result=1;
	for (int i=1;i<=n;++i) {
		result*=i;
	}
	return result;
}

int main() {
	int n;
	cin>>n;
	double e=1;
	for (int i=1;i<=n;i++) {
		e+=1.0/mul(i);
	}
	cout<<fixed<<setprecision(10)<<e;
	return 0;
}

36 计算多项式的值

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main() {
	float x,result=0;
	int n;
	cin>>x>>n;
	for (int i=n;i>=0;i--) {
		result+=pow(x,i);
	}
	cout<<fixed<<setprecision(2)<<result;
	return 0;
}

37 雇佣兵

#include <iostream>
using namespace std;

int main() {
	int m,n,x;
	cin>>m>>n>>x;
	while (x>0) {
		for (int i=1;i<=m;i+=n) {
			if (x>=1) {
				--x;
			} else {
				cout<<n;
				return 0;
			}
		}
		n=n+m/n;
	}
	cout<<n;
	return 0;
} 

38 计算多项式的导函数

这道题讲得好像很复杂的样子……不过很简单

#include <iostream>
using namespace std;

int main() {
	int n;
	cin>>n;
	if (n==0) {
		cout<<0;
		return 0;
	}
	for (int i=n;i>0;i--) {
		int c;
		cin>>c;
		cout<<c*i<<" ";
	}
	return 0;
}

39 与7无关的数

#include <iostream>
using namespace std;

int main() {
	int n,result=0;
	cin>>n;
	for (int i=1;i<=n;++i) {
		int i2=i;
		bool ok=true;
		while (true) {
			int w=i2%10;
			i2/=10;
			if (w==7) {
				ok=false;
				break;
			}
			if (i2==0) {
				break;
			}
		}
		if (i%7!=0&&ok) {
			result+=i*i;
		}
	}
	cout<<result;
}

40 数1的个数

#include <iostream>
using namespace std;

int main() {
	int n,result=0;
	cin>>n;
	for (int i=1;i<=n;++i) {
		int i2=i;
		while (true) {
			int w=i2%10;
			i2/=10;
			if (w==1) result++;
			if (i2==0) break;
		}
	}
	cout<<result;
	return 0;
}

剩下5道题,下一篇文章再来分享解题代码~~~~ 

猜你喜欢

转载自blog.csdn.net/leleprogrammer/article/details/127164315