【洛谷刷题】--2.级数求和与三连击问题

1.级数求和问题

已知:S_n= 1+1/2+1/3+…+1/nSn​=1+1/2+1/3+…+1/n。显然对于任意一个整数KK,当nn足够大的时候,S_nSn​大于KK。

现给出一个整数KK(1 \le k \le 151≤k≤15),要求计算出一个最小的nn;使得S_n>KSn​>K。

#include
using namespace std;

int main()
{
    int K,n=0;
    double S=0.00; //求和问题S的数据类型为浮点型数据或者双精度类型
    cin>>K;
    while(S<=K)
    {
        n++;
        S+=(1.0/n);  // 存在数据类型的转换 int->double  (1.0/int)
    
    }
    cout<

2.三连击

将1,2, \cdots ,91,2,⋯,9共99个数分成33组,分别组成33个三位数,且使这33个三位数构成1:2:31:2:3的比例,试求出所有满足条件的33个三位数。

要注意的是百、十、个位数的拆分。分别拆分三个数的位数,存放到数组中,每个数出现的次数只能是一次。

#include
using namespace std;

int main()
{
	int a[9];
	int p,q,r,s,t,u,v,w,x, z;
	for(int i=1;i<=3;i++)
	{
		for(int j=1;j<=9;j++)
		{
			for(int k=1;k<=9;k++)
			{
				p=i*100+j*10+k;
				q=2*p;
				r=3*p;
				//第二个数的百、十、个位
				s=q/100;
				t=(q%100)/10;
				u=q%10;
				//第三个数的百、十、个位
				v=r/100;
				w=(r%100)/10;
				x=r%10;
				a[0]=i;
				a[1]=j;
				a[2]=k;
				a[3]=s;
				a[4]=t;
				a[5]=u;
				a[6]=v;
				a[7]=w;
				a[8]=x;
				z=0;
				for(int m=0;m<9;m++)
				{
					for(int n=m+1;n<9;n++)
					{
					if(a[m]==a[n])
						z=1;
					}
				}
				if(z!=1&&r<=999&&t!=0&&u!=0&&w!=0&&x!=0)
					cout<

 

 

你可能感兴趣的:(#,洛谷刷题)