寒假第一周周报

文章描述了作者在学习Python过程中尝试解决的几个C++编程题目,涉及哈希表、沙漏图案打印、个位数统计、考试座位号查找以及连续因子的计算,展示了作者对这些基础概念的应用实践。
摘要由CSDN通过智能技术生成

python学习情况

C++速成情况

题目情况

完成四道算法题

主要都是哈希表知识点

打印沙漏

#include<bits/stdc++.h>
using namespace std;
int n,i,j,k;
char c;
int main()
{
	cin>>n >>c;
	int x=1,uper=0;
	while(x<=n)
	{
		uper++;
		x+=2*(2*uper+1);
	}
	//上
	for(i=uper;i>0;i--)
	{
		for(j=0;j<uper-i;j++)
		{
			cout<<" ";
		} 
		for(k=0;k<2*i-1;k++)
		{
			cout<<c;
			n--;
		} 
		cout<<endl;
	} 
	//下
	int loer=uper-1;
	for(i=1;i<=loer;i++) 
	{
		for(j=0;j<loer-i;j++)
		{
			cout<<" ";
		} 
		for(k=0;k<2*i+1;k++)
		{
			cout<<c;
			n--;
		} 
		cout<<endl;
	}
	cout<<n;
	return 0;
}

个位数统计

#include<bits/stdc++.h>
using namespace std;
char a[1005];
int i=0;
int c=0;
int main()
{
	cin>>a;
	map<char,int>m;
	for(i=0;i<strlen(a);i++)
	{
		c=a[i]-'0';
		m[c]++;
	}
	for(i=0;i<10;i++)
	{
		if(m[i]==0)continue;
		cout<<i<<":"<<m[i]<<endl;	
	}
	return 0;
}

考试座位号

#include<bits/stdc++.h>
using namespace std;
struct{
	char num[20];
}test[1005];
int rech[1005];
int ch[1005];
int n,m;
int a,tag;
int main()
{
	cin>>n;
	getchar();
	int i=0;
	map<int,int>m;
	while(n--)
	{
		cin>>test[i].num >>rech[i] >>ch[i];
		getchar();
		m[rech[i]]=i;
		i++;
	}
	cin>>n;
	getchar();
	while(n--)
	{
		cin>>a ;
		tag=m[a];
		cout<<test[tag].num<<" "<<ch[tag];
		cout<<endl;
	}
	return 0;
}

连续因子

连续因子的乘积必定还是该数的因子

#include<bits/stdc++.h>
using namespace std;
int a[100];
int i,j;
int main()
{
    int n;
    cin>>n;
    int p = 0; 
    for(i = 2; i < sqrt(n)+1; i++) 
	{if(n%i==0) {a[p++]=i;}}
    if(p==0){a[p++]=n;}
    int sum = 1;
    int x = 1;
    int max = 1;
    int y = 0;
    for(i = 0; i < p; i++) 
	{
        sum = a[i];
        x=1;
        for(j = i + 1; j < p; j++) 
		{
            if(a[j] == a[j-1] + 1)
			{
                sum = sum * a[j];
                if(n%sum==0) 
				{
                    x++;
                    if(x>max) 
					{ 
                        max = x;
                        y=i; 
                    }
                } 
				else 
				{j = p;}
            } 
			else 
			{j=p;}
        }
    }
    cout<<max<<endl;
    for(int i = y; i < y+max; i++) 
	{
        if(i!=y+max-1) 
		{cout << a[i] << "*";} 
		else 
		{cout << a[i];}
    }
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值