zoukankan      html  css  js  c++  java
  • noi寒假刷题之旅_1.6编程基础之一维数组(15题)

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

    装了一下官方版的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%%
    ",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;
    } 
  • 相关阅读:
    程序员的成长阶梯和级别[转]
    【转】教你如何迅速秒杀99%的海量数据处理面试题
    【转】探索C#之布隆过滤器(Bloom filter)
    基于.NET平台常用的框架整理 [转]
    使用 Async 和 Await 的异步编程(C# 和 Visual Basic)[msdn.microsoft.com]
    使用异步编程
    Node.js Web框架收集
    js闭包的定义与应用
    null 与 undefined 区别
    git 基本操作—笔记
  • 原文地址:https://www.cnblogs.com/chrysanthemum/p/12206550.html
Copyright © 2011-2022 走看看