ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

noi寒假刷题之旅_Day1

2020-01-17 16:51:38  阅读:196  来源: 互联网

标签:std main noi int namespace cin Day1 include 刷题


又回来了,先总结一下前两天干什么去了:

装了一下官方版的kali2.0和一个完整版的kali2.0,然后更新了一下我的老版本的kali内核。为什么呢?还不是为了安装W3af,太难了,装了3天都没装上,本来已经放弃了就打算直接用console界面,谁知道一start它又抱了一堆错,真的要吐血了。W3AF果断放弃,岂可休。但是装机的过程倒是越发熟练了,发现官方版的kali图形界面不是很兼容,老是有闪屏,而且收藏夹里的网站也是打不开的(虽然这些网站在火狐书签栏里都有),后来也摸了几个比较感兴趣的软件,新版的软件库更加丰富了,好多软件还是要翻墙,好累。而且发现有的还是不能直接用,要装好多的依赖。一些老软件也不见了要自己安装,特别是OWASP,还好安装倒是挺简单的。试了一下kali-undercover功能,感觉它不是很稳定,其中有一次undercover后菜单栏都没有了。。。。学了一下华为云的使用,考虑到我有一个弹性服务器ECS,打算配置一个Linux的小博客,装完了apache2,php,mysql,word press,谁知道一打开界面,提示word press不兼容php,吐血。爬了两天回来写写代码散散心。


 

1.6编程基础之一维数组(15题)

01:与指定数字相同的数的个数

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int num[102]={};
	for(int i=0;i<n;++i)cin>>num[i];
	int m,count=0;cin>>m;
	for(int i=0;i<n;++i)
	{
		if(num[i]==m)++count;
	 } 
	cout<<count;
	return 0;
 } 

02:陶陶摘苹果

#include<iostream>
using namespace std;
int main()
{
	int num[102]={};
	for(int i=0;i<10;++i)cin>>num[i];
	int m,count=0;cin>>m;
	for(int i=0;i<10;++i)
	{
		if(num[i]<=m+30)++count;
	 } 
	cout<<count;
	return 0;
 } 

03:计算书费

#include<iostream>
using namespace std;
int main()
{
	double temp,num[10]={28.9,32.7,45.6,78,35,86.2,27.8,43,56,65},sum=0;
	for(int i=0;i<10;++i)
	{
		cin>>temp;
		sum+=temp*num[i];
	}
	printf("%.1f",sum); 
	return 0;
} 

04:数组逆序重放

#include<iostream>
using namespace std;
int main()
{
	int n,num[102]={};
	cin>>n;
	for(int i=0;i<n;++i)
	{
		cin>>num[i];
	}
	cout<<num[n-1];
	for(int i=n-2;i>=0;--i)
	{
		cout<<" "<<num[i];
	}
	return 0;
} 

05:年龄与疾病

#include<iostream>
using namespace std;
int main()
{
	int n,temp;
	double num[4]={};
	cin>>n;
	for(int i=0;i<n;++i)
	{
		cin>>temp;
		if(0<=temp&&temp<=18)
		{
			num[0]++;
		}
		else if(temp<=35)
		{
			num[1]++;
		}
		else if(temp<=60)
		{
			num[2]++;
		}
		else
		{
			num[3]++;
		}
	}
	for(int i=0;i<4;++i)
	{
		printf("%.2f%%\n",num[i]/n*100.0);
	}
	return 0;
} 

06:校门外的树

#include<iostream>
using namespace std;
int tree[10001];
int main()
{
	int L,M;
	cin>>L>>M;
	int a,b;
	for(int i=1;i<=M;++i)
	{
		cin>>a>>b;
//		cout<<a<<","<<b<<endl; 
		for(int j=a;j<=b;++j)
		{
			tree[j]=1;
//			cout<<j<<endl;
		}
	}
	int count=0;
	for(int i=0;i<=L;++i)
	{
		if(tree[i]==0)
		{
			++count;
//			cout<<i<<endl;	
		}
	}
	cout<<count;
	return 0;
} 

07:有趣的跳跃

#include<iostream>
#include<cmath>
#include <algorithm>
using namespace std;
int tree[10001];
int main()
{
	int n;
	int num[3001]={},temp[3001]; 
	cin>>n;
	cin>>temp[0];
	for(int i=1;i<n;++i)
	{
		cin>>temp[i];
		num[i-1]=abs(temp[i]-temp[i-1]);
	}
	sort(num,num+n);
	int flag=1;
	for(int i=0;i<n-2;++i)
	{
		if((num[i+1]-num[i])!=1)
		{
			flag=0;break;
		}
	}
	if(flag)
	{
		cout<<"Jolly";
	}
	else
	{
		cout<<"Not jolly";
	}
	return 0;
} 

08:石头剪刀布

#include<iostream>
#include<cmath>
#include <algorithm>
using namespace std;
int tree[10001];
bool Cmp(int a,int b)
{
	if(a==0&&b==2)
	{
		return 1;
	}
	else if(a==2&&b==5)
	{
		return 1;
	}
	else if(a==5&&b==0)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
int main()
{
	int n,na,nb;
	int ca=0,cb=0;
	int A[101]={},B[101]={};
	cin>>n>>na>>nb; 
	for(int i=0;i<na;++i)cin>>A[i]; 
	for(int i=0;i<nb;++i)cin>>B[i]; 
	for(int i=0;i<n;++i)
	{
		if(Cmp(A[i%na],B[i%nb])) ca++;
		if(Cmp(B[i%nb],A[i%na])) cb++;
	}
	if(ca>cb)
	{
		cout<<"A";
	}
	else if(cb>ca)
	{
		cout<<"B";
	}
	else
	{
		cout<<"draw";	
	} 
	return 0;
} 

09:向量点积计算

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

int main()
{
	int n,sum=0;
	int a[1001]={},b[1001]={};
	cin>>n;
	for(int i=0;i<n;++i)cin>>a[i];
	for(int i=0;i<n;++i)cin>>b[i];
	for(int i=0;i<n;++i)
	{
		sum+=a[i]*b[i];
	}
	cout<<sum;
	return 0;
} 

10:大整数加法

#include<iostream>
#include<cmath>
#include<algorithm>
#include<string> 
using namespace std;
int res[20000];
int ada[20000],adb[20000];
int to_Int(char a)
{
	return a-'0';
}
int main()
{
	string a,b;
	int index=0;
	cin>>a>>b;
	if(a=="0"&&b=="0")
	{
		cout<<0;
		return 0;
	}
	int start=max(a.length(),b.length());
	for(int i=a.length()-1,j=0;i>=0;--i,++j)ada[j]=to_Int(a[i]);
	for(int i=b.length()-1,j=0;i>=0;--i,++j)adb[j]=to_Int(b[i]);
	
	for(int i=0;i<start;++i,++index)
	{
		res[index]=res[index]+ada[i]+adb[i];
		if(res[index]>9)
		{
			res[index]-=10;
			res[index+1]++;
		}
	}
	int i;
	for(i=index;res[i]==0;--i);
	for(;i>=0;--i)cout<<res[i];
	return 0;
} 

11:大整数减法

#include<iostream>
#include<cmath>
#include<algorithm>
#include<string> 
using namespace std;
int res[20000];
int ada[20000],adb[20000];
int to_Int(char a)
{
	return a-'0';
}
int main()
{
	string a,b;
	int index=0;
	cin>>a>>b;
	int start=max(a.length(),b.length());
	for(int i=a.length()-1,j=0;i>=0;--i,++j)ada[j]=to_Int(a[i]);
	for(int i=b.length()-1,j=0;i>=0;--i,++j)adb[j]=to_Int(b[i]);
	
	for(int i=0;i<start;++i,++index)
	{
		res[index]=ada[i]-adb[i];
		if(res[index]<0)
		{
			int indexa=i;
			res[index]+=10;indexa++;
			ada[indexa]--;
			while(ada[indexa]<0)
			{
				ada[indexa]+=10;
				indexa++;
				ada[indexa]--;
			}
		}
//		cout<<">>"<<res[index]<<endl;
	}
	int i,flag=1;
	for(i=index;res[i]==0;--i);
	for(;i>=0;--i)
	{
		cout<<res[i];flag=0;
	}
	if(i<0&&flag)cout<<0;
	return 0;
} 

12:计算2的N次方

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	int n;cin>>n;
	printf("%.0lf",pow(2,n));
	return 0;
} 

13:大整数的因子

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
	string c;
	int index=0,flag=0;
	cin>>c;
	for(int i=2;i<=9;++i)
	{
		int index=0;
		for(int j=0;j<c.length();++j)
		{
			index=(index*10+c[j]-'0')%i;
		}
		if(!index)
		{
			flag=1;cout<<i<<" ";
		}
	}
	if(!flag)
	{
		cout<<"none";
	}	
	return 0;
} 

14:求10000以内n的阶乘[这里是先把每一位算出来在计算进位]

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int ans[100000010];
int main()
{
	int n,j,add=0,index=1;
	cin>>n;
	ans[1]=1;
	for(int i=2;i<=n;++i)
	{		
		for(int j=1;j<=index;++j)
		{
			ans[j]*=i;	
		}
		for(int j=1;j<=index;++j)
		{
			if(ans[j]>=10)
			{
				ans[j+1]+=ans[j]/10;
				ans[j]%=10; 
			}
		}
		while(ans[index+1]>0)
		{
			index++;
			ans[index+1]=ans[index]/10;
			ans[index]%=10;	
		}		
	}
	for(int i=index;i>=1;--i) cout<<ans[i];
	return 0;
}

15:阶乘和

#include<iostream>
using namespace std;
#define N 100000
int a[N],n,tot=1,lena=1,ans[N];
int main()
{
    cin>>n;
    a[1]=1;ans[1]=1;
    for(int i=2;i<=n;i++)
    {
        for(int j=1;j<=lena;j++)a[j]*=i;
        for(int j=1;j<=lena;j++)
        {
            if(a[j]>9)
            {
                a[j+1]+=a[j]/10;
                a[j]%=10;
                if(j==lena)lena++;
            }
        }
        tot=max(lena,tot);
        for(int j=1;j<=tot;j++)
            ans[j]+=a[j];
        for(int j=1;j<=tot;j++)
            if(ans[j]>9)
            {
                ans[j+1]++;
                ans[j]-=10;
                if(tot==j)tot++;
            }
    }
    for(int i=tot;i>=1;i--)cout<<ans[i];
    cout<<endl;
}

 

 

 

 

  

 

  

  

标签:std,main,noi,int,namespace,cin,Day1,include,刷题
来源: https://www.cnblogs.com/chrysanthemum/p/12206550.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有