结营考核课题。

1.门牌制作

代码:

#include <stdio.h>
int main()
{   int num(int aim);
    int sum=0;
    
    for(int i=1;i<=2020;i++)
        sum=sum+num(i);
    printf("%d",sum);
    return 0;
}
int num(int aim){
    int i=0;
    for(i=0;aim!=0;aim=aim/10)
    {   
        if(aim%10==2)
            i++;
    }

    return i;

}

答案:624

B.既约分数

#include <iostream>
using namespace std;
int main()
{   
	int sum=0;
    int gcb(int a, int b);
	
	
    for(int i=1;i<=2020;i++)
		for(int j=1;j<=2020;j++)
		{
			if(gcb(i,j)==1)
				sum++;
		}
	cout << sum ;
    return 0;
}
int gcb(int a,int b)
{
	if(b==0)
	 return a;
	else
	return gcb(b,a%b);
}

答案:2481215

C:蛇形填数

#include <iostream>
using namespace std;
int main()
{
    int array[100][100]={0},status=1,i=1,j=1,next=2,flag=2;
    array[1][1]=1;

    while(i<50 && j<50)
    {
        if(status%2!=0)
        {
            if(flag==1)
            {
                j=j+1;
                array[i][j]=next++;
                flag=2;
            }
            else
            {
                if(j>1)
                {
                    i++;
                    j--;
                    array[i][j]=next++;
                }
                else
                {
                    status=2;
                    flag=1;
                }
                
            }

        }
        else
        {
            if(flag==1)
            {
                i=i+1;
                array[i][j]=next++;
                flag=2;
            }
            else
            {
                if(i>1)
                {
                    i--;
                    j++;
                    array[i][j]=next++;
                }
                else
                {
                    status=1;
                    flag=1;
                }
            }
        }
    }

    cout << array[20][20] << endl;
    return 0;


}

答案: 761

D:跑步锻炼

#include <iostream>
using namespace std;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check_year(int year)
{   
    if(year%4==0 && year%100!=0 || year%400==0)
        return true;
    
    return false;
}
int main()
{
    int year=2000,month=1,day=1,star=6,num=0,s_num=0;

    for(year=2000;year<=2020;year++)
    {   
        
        month=month%12;
        for(month=1;month<=12;month++)
        {   
            if(year==2020 && month==10)
            {   
                s_num++;
                break;
            }   
            if(!check_year(year)|| check_year(year) &&month!=2)
                for(day=1;day<=m[month];day++)
                {   
                    if(star>7)
                        star=1;
                    
                    if(day==1 || star==1)
                    {
                        s_num++;
                    }
                    else
                        num++;
                    star++;
                }
            else if(month==2 && check_year(year))
            {   
                
                for(day=1;day<=29;day++)
                {   
                     if(star>7)
                        star=1;
                    if(year==2004 && month== 3&& day==29)
                        cout << star << ' ' ;
                    if(day==1 || star==1)
                        s_num++;
                    else
                        num++;
                    star++;
                }
            }
        }
    }
 
    cout << num+s_num*2 ;
    return 0;

}

答案:8879

E:七段码

#include <iostream>
#include <vector>
#include <queue>

using namespace std;
vector<int> v[8];

int color[8]={0,0,0,0,0,0,0,0};
int main()
{   
    int sum=0;
    void init();
    int bfs();
    for(color[1]=0;color[1]<=1;color[1]++)
        for(color[2]=0;color[2]<=1;color[2]++)
            for(color[3]=0;color[3]<=1;color[3]++)
                for(color[4]=0;color[4]<=1;color[4]++)
                    for(color[5]=0;color[5]<=1;color[5]++)
                        for(color[6]=0;color[6]<=1;color[6]++)
                            for(color[7]=0;color[7]<=1;color[7]++)
                            {
                                init();
                                sum=sum+bfs();
                            }
    cout << sum ;

    
}
int bfs()
{   
    int trace[8]={0};
    for(int i=1;i<=7;i++)
    {
        if(color[i]==1)
        {
            queue<int> s;
            s.push(i);
            trace[i]=1;
            while(!s.empty())
            {
                int now=s.front();;
                s.pop();
                for(int i=0;i<v[now].size();i++)
                {   
                    int next=v[now][i];
                    if(color[next]==1 && trace[next]!=1)
                    {
                        s.push(next);
                        trace[next]=1;
                    }
                }
            }
            for(int i=1;i<=7;i++)
                if(trace[i]!=color[i])
                    return 0;
                return 1;
        }
    }
    return 0;
}
void init()
{
  
        v[1].push_back(2);
        v[1].push_back(6);
  

        v[2].push_back(1);
        v[2].push_back(7);
        v[2].push_back(3);
  
   
        v[3].push_back(2);
        v[3].push_back(4);
        v[3].push_back(7);
   
        v[4].push_back(3);
        v[4].push_back(5);
  
        v[5].push_back(4);
        v[5].push_back(6);
        v[5].push_back(7);
  
        v[6].push_back(1);
        v[6].push_back(7);
        v[6].push_back(5);
   
        v[7].push_back(2);
        v[7].push_back(3);
        v[7].push_back(5);
        v[7].push_back(6);

}

答案:80

F:成绩统计

#include <iostream>
#include <vector>
using namespace std;
int main()
{   
    vector<int> score;
    int n,pass=0,ex=0;
    cin >> n;
    for(int i=0;i<n;i++)
    {
        int a;
        cin >> a;
        if(a>=60)
            pass++;
        
        if(a>=85)
            ex++;
    }
    printf("%.0lf%%\n%.0lf%%\n", (double)(pass)*100/n , (double)(ex)*100/n);
    return 0;

}

G:回文日期

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int num=0,nowday,nowmonth,nowyear;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check_year(int year)
{   
    if(year%4==0 && year%100!=0 || year%400==0)
        return true;
    
    return false;
}

void isright(int year,int month,int day)
{   
    if(year==nowyear)
    {

        if(month<nowmonth)
            return ;
        else if(month==nowmonth)
                if(day<=nowday)
                    return ;
    }
    int now=year*10000+month*100+day;
    vector<int> false1;
    vector<int> right1;
    while(now!=0)
    {
        if(now>=10)
            right1.push_back(now-(now/10)*10);
        else
            right1.push_back(now);
        
        now=now/10;   
    }
     for(int i=0;i<right1.size();i++)
        false1.push_back(right1[i]);
   
    reverse(right1.begin(),right1.end());

   
    
    for(int i=0;i<right1.size();i++)
        if(false1[i]!=right1[i])
            return ;
    
    if(num==0)
    {    
        printf("%d%02d%02d\n",year,month,day);
        num++;
        if(right1[0]==right1[2] && right1[1]==right1[3] && right1[3]==right1[4] && right1[2]==right1[5] && right1[4]==right1[6] &&right1[5]==right1[7])
        {
            printf("%d%02d%02d\n",year,month,day);
            num++;
        }
    }
    else
    {
       if(right1[0]==right1[2] && right1[1]==right1[3] && right1[3]==right1[4] && right1[2]==right1[5] && right1[4]==right1[6] &&right1[5]==right1[7])
        {
            printf("%d%02d%02d\n",year,month,day);
            num++;
        }
    }
}
int main()
{
    int n,day,month,year,a,b,flag=0;

   

    cin >> n;
    nowyear=n/10000;
    nowmonth=(n-nowyear*10000)/100;
    nowday=n-nowyear*10000-nowmonth*100;
    

    a=nowmonth;
    b=nowday;
    for(year=nowyear;;year++)
    {   
        for(month=1;month<=12;month++)
        {   
        
            if(!check_year(year)|| check_year(year) && month!=2)
            {
                for(day=1;day<=m[month];day++)
                    isright(year,month,day);
                if(num==2)
                    return 0;
            }
            else if(month==2 && check_year(year))   
            {  
                for(day=1;day<=29;day++)
                   isright(year,month,day);
                if(num==2)
                    return 0;
            }
            
        }
    }

    return 0;
}

H:子串分值和

#include <iostream>
#include<set>
#include<cstring>
using namespace std;

int subset(int n,string a)
{   
    set<char> sub;
    int sum=0;
    char temper=a[0];
    for(int j=0;j<n;j++)
        for(int i=j;i<n;i++)
        {
            for(int z=j;z<=i;z++)
                sub.insert(a[z]);
            sum+=sub.size();
            sub.clear();
        }
    return sum;
}
int main()
{   
    
    string w;
    cin >> w;
    cout <<  subset(w.size(),w);
    return 0;
}

I:平面划分

#include <iostream>
#include <vector>
#include <map>
#include <set>
using namespace std;
set< pair<double,double> > point;
set< pair<double,double> > line;

int main()
{   
    int sum=1;
    int num(pair<double,double> point);
    int n;
    cin >> n;
    for(int i=0;i<n;i++)
    {
        int k,b,pre=line.size();
        cin >> k >> b;
        pair<double,double> now(k,b);
        line.insert(now);

        if(line.size()==pre)
            continue;
       
        else
        {
            sum++;
            sum=sum+num(now);
        }
    }
    
    cout << sum ;
    return 0;
}

int num(pair<double,double> now) 
{
    int sum=0;
	
    pair<double, double> x_point;

	for (auto it : line) 
    {
		double k2,b2;
        k2=it.first,b2=it.second;
        
        double k1,b1;
        k1=now.first,b1=now.second;
		
        if(k2!=k1) 
        {
            x_point.first=(-(b1-b2))/(k1-k2);
            x_point.second=x_point.first*k1+b1;
			point.insert(x_point);
		}

	}
	sum=sum+point.size();
	
    point.clear();
    return sum;
}

J:字串排序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值