牛客小白月赛18

Forsaken喜欢数论

在这里插入图片描述
代码:

//线性筛找素数加Ans直接加 
 
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
#define MAXN 30000003
long long n,ans;
long long chk[MAXN];
long long p[MAXN];
long long cnt[MAXN];
long long t;
 
int main(){
    scanf("%lld",&n);
    for (long long i=2;i<=n;i++){
        if (!chk[i]){
            p[++t]=i;ans+=i;
           //   printf("**p[%lld]=%lld\n",t-1,i);
        }
        for (long long j=1;j<=t;j++)
        {
            if(i*p[j]>n)break;
            chk[i*p[j]] = 1;ans+=p[j];//printf("**%lld cnt[%lld]=%lld\n",i*p[j],j,cnt[j]);
            if (i%p[j]==0)
            break;
        }
    }
  //  for(long long i=1;i<=t;i++)ans+=p[i]*cnt[i];
    printf("%lld",ans);
}
#include <iostream>
 
using namespace std;
 
const int LIM = 3e7 + 10;       
int prime[LIM / 3];
int miniFactor[LIM];
int primepos;

void euler() {
    int tmp;
    for (int i = 2; i < LIM; i++) {
        if (!miniFactor[i]) prime[primepos++] = i, miniFactor[i] = i;
        for (int j = 0; (tmp = i * prime[j]) < LIM; j++) {
            miniFactor[tmp] = prime[j];
            if (!(i % prime[j])) break;
        }
    }
}
 

int main(void) {
    euler();
    long long sum = 0;
    int n;
    scanf("%d",&n);
    for (int i = 1; i <= n; i++) {
       sum += miniFactor[i];
    }
    printf("%lld\n",sum);
    return 0;
}

Forsaken喜欢正方形

在这里插入图片描述
在这里插入图片描述
代码:

#include <iostream>
#include <math.h>
using namespace std;

//直接调用IsSquare函数,输入为四个点的坐标,输出为true or false;
//求两点间的距离

double Distance(int x1,int y1,int x2,int y2){
	return sqrt(pow((x1-x2),2)+pow((y1-y2),2));
}

//判断三个点是否构成直角,第一个参数点是顶点

bool IsRightAngle(int x1,int y1,int x2,int y2,int x3,int y3){
	if((x2-x1)*(x3-x1)+(y2-y1)*(y3-y1)==0)
	return true;
	return false;
}

bool IsSquare(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4){
	
	if(x1==x2&&x2==x3)
	return false;
	
	double s12=Distance(x1,y1,x2,y2);
	double s13=Distance(x1,y1,x3,y3);
	double s14=Distance(x1,y1,x4,y4);
	double s23=Distance(x2,y2,x3,y3);
	double s24=Distance(x2,y2,x4,y4);
	double s34=Distance(x3,y3,x4,y4);
	
	if(s12==s13&&s24==s34&&s12==s24){
		if(IsRightAngle(x1,y1,x2,y2,x3,y3)) return true;
		else return false;
	}
	
	if(s12==s14&&s23==s34&&s12==s23){
		if(IsRightAngle(x1,y1,x2,y2,x4,y4)) return true;
		else return false;
	}
	
	if(s13==s14&&s23==s24&&s13==s23){
		if(IsRightAngle(x1,y1,x3,y3,x4,y4)) return true;
		else return false;
	}
	
	return false;
}

int main(){
	
	int x1,y1,x2,y2,x3,y3,x4,y4;
	cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;
	
	if(IsSquare(x1,y1,x2,y2,x3,y3,x4,y4))
	printf("wen\n");
	else if(IsSquare(x1-1,y1,x2,y2,x3,y3,x4,y4))
	printf("hai xing\n");
	else if(IsSquare(x1+1,y1,x2,y2,x3,y3,x4,y4))
	printf("hai xing\n");
	else if(IsSquare(x1,y1+1,x2,y2,x3,y3,x4,y4))
	printf("hai xing\n");
	else if(IsSquare(x1,y1-1,x2,y2,x3,y3,x4,y4))
	printf("hai xing\n");
	else if(IsSquare(x1,y1,x2+1,y2,x3,y3,x4,y4))
	printf("hai xing\n");
	else if(IsSquare(x1,y1,x2-1,y2,x3,y3,x4,y4))
	printf("hai xing\n");
	else if(IsSquare(x1,y1,x2,y2+1,x3,y3,x4,y4))
	printf("hai xing\n");
	else if(IsSquare(x1,y1,x2,y2-1,x3,y3,x4,y4))
	printf("hai xing\n");
	else if(IsSquare(x1,y1,x2,y2,x3+1,y3,x4,y4))
	printf("hai xing\n");
	else if(IsSquare(x1,y1,x2,y2,x3-1,y3,x4,y4))
	printf("hai xing\n");
	else if(IsSquare(x1,y1,x2,y2,x3,y3+1,x4,y4))
	printf("hai xing\n");
	else if(IsSquare(x1,y1,x2,y2,x3,y3-1,x4,y4))
	printf("hai xing\n");
	else if(IsSquare(x1,y1,x2,y2,x3,y3,x4+1,y4))
	printf("hai xing\n");
	else if(IsSquare(x1,y1,x2,y2,x3,y3,x4-1,y4))
	printf("hai xing\n");
	else if(IsSquare(x1,y1,x2,y2,x3,y3,x4,y4+1))
	printf("hai xing\n");
	else if(IsSquare(x1,y1,x2,y2,x3,y3,x4,y4-1))
	printf("hai xing\n");
	else
	printf("wo jue de bu xing\n");
	
	return 0;	
}

#include <iostream>
#include<algorithm>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<map>
#include<queue>
#include<vector>
#include<string>
#include<time.h>
using namespace std;
struct node
{
    int x, y;
}aa,bb,cc,dd,so[7];
vector<node>a, b, c, d;
int len(node a, node b)
{
    int x = (a.x - b.x)*(a.x - b.x);
    int y = (a.y - b.y)*(a.y - b.y);
    return x + y;
}
int squre(node a, node b, node c, node d)
{
    int flag = 0;
    if (len(a, b) == len(d, c) && len(a, c) == len(b, d) && len(a, d) == len(b, c))
        flag = 1;
    return flag;
}
int t = 0;
void Dfs(node a, node b, node c, node d)
{
    so[1] = a; so[2] = b; so[3] = c; so[4] = d;
    for (int i = 1; i <= 4; i++)
    {
        so[i].x -= 1;
        if (squre(so[1], so[2], so[3], so[4]))
            t = 1;
        so[i].x += 2;
        if (squre(so[1], so[2], so[3], so[4]))
            t = 1;
        so[i].x -= 1;
    }
    for (int i = 1; i <= 4; i++)
    {
        so[i].y -= 1;
        if (squre(so[1], so[2], so[3], so[4]))
            t = 1;
        so[i].y += 2;
        if (squre(so[1], so[2], so[3], so[4]))
            t = 1;
        so[i].y -= 1;
    }
}
int main()
{
    cin >> aa.x >> aa.y;
    cin >> bb.x >> bb.y;
    cin >> cc.x >> cc.y;
    cin >> dd.x >> dd.y;
    if (squre(aa,bb,cc,dd))
    {
        cout << "wen" << endl;
        return 0;
    }
    Dfs(aa, bb, cc, dd);
    if (t == 1)
    {
        cout << "hai xing" << endl;
        return 0;
    }
    cout << "wo jue de bu xing" << endl;
    return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ll x1,y1,x2,y2,x3,y3,x4,y4;
    scanf("%lld%lld%lld%lld%lld%lld%lld%lld",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
    if(abs(x1-x2)==abs(x3-x4)&&abs(y1-y2)==abs(y3-y4))
        printf("wen\n");
    else if(abs(x1-x3)==abs(x2-x4)&&abs(y1-y3)==abs(y2-y4))
        printf("wen\n");
    else if(abs(x1-x4)==abs(x2-x3)&&abs(y1-y4)==abs(y2-y3))
        printf("wen\n");
    else if(abs(abs(x1-x2)-abs(x3-x4))==1&&abs(y1-y2)==abs(y3-y4))
         printf("hai xing\n");
    else if(abs(abs(x1-x3)-abs(x2-x4))==1&&abs(y1-y3)==abs(y2-y4))
         printf("hai xing\n");
    else if(abs(x1-x2)==abs(x3-x4)&&abs(abs(y1-y2)-abs(y3-y4))==1)
         printf("hai xing\n");
    else if(abs(x1-x3)==abs(x2-x4)&&abs(abs(y1-y3)-abs(y2-y4))==1)
    {
         printf("hai xing\n");
    }
    else if(abs(abs(x1-x4)-abs(x2-x3))==1&&abs(y1-y4)==abs(y2-y3))
    {
         printf("hai xing\n");
    }
    else if(abs(x1-x4)==abs(x2-x3)&&abs(abs(y1-y4)-abs(y2-y3))==1)
    {
         printf("hai xing\n");
    }
    else
        printf("wo jue de bu xing\n");
    return 0;
}

Forsaken喜欢字符串

在这里插入图片描述
在这里插入图片描述
代码:

#include <bits/stdc++.h>
#include <unordered_map>
#define ll long long
#define sc scanf
#define pr printf
using namespace std;
string s[50005];
unordered_map<string, ll>mp;
int main()
{
    //freopen("in.in", "r", stdin);
    int n, m, len;
    sc("%d%d", &n, &len);
    for (int i = 1; i <= n; i++)
    {
        cin >> s[i];
        for (int j = 0; j < len; j++)
            for (int k = 1; j + k <= len; k++)
                mp[s[i].substr(j, k)]++;
    }
    sc("%d", &m);
    while (m--)
    {
        ll ans = 0;
        int a, b;
        sc("%d%d", &a, &b);
 
        for (int j = 0; j < len; j++)
            if (j + b <= len)
                mp[s[a].substr(j, b)]--;
 
        for (int j = 0; j < len; j++)
            if (j + b <= len)
                ans += mp[s[a].substr(j, b)];
 
        for (int j = 0; j < len; j++)
            if (j + b <= len)
                mp[s[a].substr(j, b)]++;
 
        ans *= b;
        pr("%lld\n", ans);
    }
}

Forsaken给学生分组

在这里插入图片描述
在这里插入图片描述

#include<iostream>
#include<algorithm>

using namespace std;

typedef long long ll;

const int maxn = 1e5+17;

int a[maxn];

int main()
{
    int n,k;
    cin >> n >> k;
    for(int i =0;i<n;i++)
    {
        cin >> a[i];
    }
    sort(a,a+n);
    ll ans=0;
    int left=0,right=n-1;
    for(int i=0;i<k;i++)
    {
        ans += a[right]-a[left];
        right--;
        left++;
    }
    cout << ans <<endl;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值