zoukankan      html  css  js  c++  java
  • $Codeforces$ $Round$ $739$ $Div.3$ 简要题解

    一时兴起,打了个 (Div3) ,果然是老年退役选手, (Div3) 只能切前三题了。只能说,道阻且长啊。

    (A) (Dislike) (of) (Threes)

    解法

    (1) 开始枚举正整数,筛掉满足 (x equiv 3 (mod 10))(x equiv 0 (mod 3)) 的正整数 (x) ,筛出 (1000) 个即可。

    (Code)

    #include<bits/stdc++.h>
    using namespace std;
    inline int read()
    {
    	int ret=0,f=1;
    	char ch=getchar();
    	while(ch>'9'||ch<'0')
    	{
    		if(ch=='-')
    			f=-1;
    		ch=getchar();
    	}
    	while(ch>='0'&&ch<='9')
    	{
    		ret=(ret<<1)+(ret<<3)+ch-'0';
    		ch=getchar();
    	}
    	return ret*f;
    }
    int t,k,num,a[1005];
    int main()
    {
    	t=read();
    	for(register int i=1;i<=5000;i++)
    	{
    		if(i%3==0||i%10==3)
    			continue;
    		num++;
    		a[num]=i;
    		if(num==1000)
    			break;
    	}
    	for(register int i=1;i<=t;i++)
    	{
    		k=read();
    		printf("%d
    ",a[k]);
    	}
    	return 0;
    }
    

    (B) (Who's) (Opposite?)

    解法

    (2|a-b|) 为环长(记为 (2r) )。设答案为 (d) ,则合法的 (d=d+r)(d=d-r)(d)([1,2n](d in N_+)) 之间。

    (Code)

    #include<bits/stdc++.h>
    using namespace std;
    inline int read()
    {
    	int ret=0,f=1;
    	char ch=getchar();
    	while(ch>'9'||ch<'0')
    	{
    		if(ch=='-')
    			f=-1;
    		ch=getchar();
    	}
    	while(ch>='0'&&ch<='9')
    	{
    		ret=(ret<<1)+(ret<<3)+ch-'0';
    		ch=getchar();
    	}
    	return ret*f;
    }
    int t,a,b,c,d,r;
    int main()
    {
    	t=read();
    	for(register int i=1;i<=t;i++)
    	{
    		a=read();
    		b=read();
    		c=read();
    		r=abs(a-b);
    		if(a>2*r||b>2*r||c>2*r)
    		{
    			printf("-1
    ");
    			continue;
    		}
    		d=c-r;
    		if(d>0&&d<=2*r)
    		{
    			printf("%d
    ",d);
    			continue;
    		}
    		d=c+r;
    		if(d>0&&d<=2*r)
    		{
    			printf("%d
    ",d);
    			continue;
    		}
    		printf("-1
    ");
    	}
    	return 0;
    }
    

    (C) (Infinity) (Table)

    解法

    考虑把 (k)拆成 (a^2+b(a,b in N,b in [0,2a])) 的形式。 (b leqslant a+1) 时, (k)((b,a+1)) ; (b>a+1) 时, (k)((a+1,2a-b+2))

    (Code)

    #include<bits/stdc++.h>
    using namespace std;
    inline int read()
    {
    	int ret=0,f=1;
    	char ch=getchar();
    	while(ch>'9'||ch<'0')
    	{
    		if(ch=='-')
    			f=-1;
    		ch=getchar();
    	}
    	while(ch>='0'&&ch<='9')
    	{
    		ret=(ret<<1)+(ret<<3)+ch-'0';
    		ch=getchar();
    	}
    	return ret*f;
    }
    int t,k,a,b,r,c,x[40005];
    int main()
    {
    	t=read();
    	for(register int i=1;i<=40000;i++)
    		x[i]=i*i;
    	for(register int i=1;i<=t;i++)
    	{
    		k=read();
    		if(k==2)
    		{
    			printf("1 2
    ");
    			continue;
    		}
    		if(k==3)
    		{
    			printf("2 2
    ");
    			continue;
    		}
    		for(register int j=1;j<=40000;j++)
    		{
    			if(k<x[j])
    			{
    				a=j-1;
    				break;
    			}
    		}
    		b=k-x[a];
    		if(b==0)
    		{
    			printf("%d %d
    ",a,1);
    			continue;
    		}
    		if(b<=a+1)
    		{
    			r=b;
    			c=a+1;
    		}
    		else
    		{
    			r=a+1;
    			c=2*a+2-b;
    		}
    		printf("%d %d
    ",r,c);
    	}
    	return 0;
    }
    

    未完待续

  • 相关阅读:
    BPM已经全面开启
    终于理解集线器、交换机、路由器之间的区别了
    Linux系统桥接模式下配置静态ip地址
    理解并手写Spring MVC框架
    Java 8 Funciton、Consumer、Predicate的作用及用法
    你想了解的分布式文件系统HDFS,看这一篇就够了
    分布式处理框架Hadoop的安装与使用
    CentOS7 中常用命令
    VMware安装Centos7并联网使用
    理解Spring AOP的实现方式与思想
  • 原文地址:https://www.cnblogs.com/Peter0701/p/15173998.html
Copyright © 2011-2022 走看看