大致题意:
如题目中给出的图片
对于这样的一个无线扩展出去的图,输入一个数n,求出数字上下左右的4个数字,按造升序输出。
大致思路:
突破点在,对于每一圈右下角的数字都是(a*2-1)*(a*2-1),a为当前在第a圈。如此,通过二分枚举判定出这个点在第几个圈内。然后在推导这个点和上下左右点的关系。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
long long getround(long long n){
long long left=0,mid,right=sqrt(2000000003),res;//1000000003
if(n==1)return 1;
while(right>=left){
mid=(right+left)/2;
long long tmp=mid;
tmp=tmp*2-1;
tmp*=tmp;
if(tmp<n){
res=mid;
left=mid+1;
}
else{
right=mid-1;
}
}
return res+1;
}
int main(){
long long i,j,k,loc,a,s,l,cas,b,c,d,n;
cin>>cas;
while(cas--){
cin>>n;
loc=getround(n);
if(n==1){
printf("2 4 6 8\n");
continue;
}
l=loc*2-1;
s=(loc-1)*2-1;
s*=s;
if(n==s+1){
cout<<s<<" "<<n+1<<" "<<(loc*2-1)*(loc*2-1)<<" "<<(loc*2-1)*(loc*2-1)+2<<endl;
continue;
}
if(n>s+1&&n<=s+l-2){
a=s-3*(l-3)+1;
a-=(s+l-1-n);
b=n-1;
c=n+1;
d=(l-1)*4+1+n;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
continue;
}
if(n==s+l-1){
a=n-1;
b=n+1;
c=n+4*l-3;
d=c+2;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
}
if(n>s+l-1&&n<s+2*(l-1)){
a=n+1-4*(l-2);
b=n-1;
c=n+1;
d=n+4*l-1;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
continue;
}
if(n==s+2*(l-1)){
a=n-1;
b=n+1;
c=n+4*l-1;
d=n+4*l+1;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
continue;
}
if(n>s+2*(l-1)&&n<s+3*(l-1)){
a=n-1-4*(l-2);
b=n-1;
c=n+1;
d=n+4*l+1;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
continue;
}
if(n==s+3*(l-1)){
a=n-1;
b=n+1;
c=n+4*l+1;
d=n+4*l+3;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
continue;
}
if(n>s+3*(l-1)&&n<s+4*(l-1)){
a=n-3-4*(l-2);
b=n-1;
c=n+1;
d=n+4*l+3;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
continue;
}
if(n==s+4*(l-1)){
// cout<<"fuck";
a=n-3-4*(l-2);
b=n-1;
c=n+1;
d=n+4*l+3;
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
}
}
return 0;
}
- 大小: 50.8 KB
分享到:
相关推荐
ZOJ,全称“浙江大学程序在线评测系统”(Zhejiang University Online Judge),是一个提供信息学(算法竞赛)题库及程序评测的网站。以下是关于ZOJ的详细介绍: 一、基本信息 名称:浙江大学程序在线评测系统(ZOJ)...
zoj 2247 Magic Trick.md
ZOJ平台提供的分类题目包括但不限于基础算法、数据结构、动态规划以及模拟问题等,这些分类覆盖了计算机科学中的多个重要知识点,让不同水平的学习者都能找到适合自己的训练题目。 对于初学者而言,基础算法类题目...
3. **算法与数据结构**:700题涵盖的范围广泛,涉及基本的排序算法(如冒泡、快速、归并排序),查找算法(如二分查找),以及高级算法如动态规划(如斐波那契数列、背包问题)、图论(如最短路径、最小生成树)、...
【标题】"ZOJ 1002" 是一个在线编程竞赛题目,源自ZOJ(Zhejiang Online Judge),这是一个面向ACM/ICPC(国际大学生程序设计竞赛)的在线评测系统。题目编号1002,通常表示该题是ZOJ平台上的一个问题,可能涉及算法...
学习ACM程序设计的朋友一定要看,这是训练必备的POJ ZOJ题目分类及解题思路
"POJ 计算几何入门题目.doc"可能介绍了计算几何的基础知识,并提供了一些实践题目,这个领域涉及点、线、面的相互关系,以及在二维和三维空间中的几何操作。 5. **ZOJ题目分类**: "zoj题目分类.doc"对应浙江大学...
《ZOJ ACM分类加题解》是针对浙江大学ACM竞赛训练平台的一份宝贵资源,它包含了大量的编程竞赛题目和相应的解答。这份资料旨在帮助参赛者提升算法能力,提高解决实际问题的技巧,无论是在无网络环境下还是有网络时,...
1. **基础算法**:包括排序(如快速排序、归并排序)、搜索(如二分查找)、动态规划、贪心算法、回溯算法等。 2. **高级数据结构**:如链表、树(二叉树、平衡树如AVL和红黑树)、图(深度优先搜索、广度优先搜索...
1. **基础算法**:作为入门部分,这个集合可能包括基础数据结构和算法,如排序(快速排序、归并排序、堆排序)、查找(二分查找、哈希表查找)以及图论的基本概念(Dijkstra、Floyd等)。这些是所有ACM竞赛者必须...
【标题】"ZOJ1027解题指南"是一个针对特定编程竞赛题目——ZOJ1027的解决方案集合。ZOJ,全称为“Zhejiang Online Judge”,是浙江大学主办的一个在线编程竞赛平台,提供了丰富的算法题目供参赛者练习和挑战。本解题...
ZOJ,全称为Zhejiang Online Judge,是一个知名的在线编程竞赛平台,主要服务于浙江大学和国内其他高校的学生,提供丰富的算法题目供参赛者练习和比赛。这个压缩包文件名为"ZOJ 700多题源代码",意味着它包含了解决...
zoj 题库 详细解答 解题代码 该资源主要涵盖了 zoj 题库中的各种编程题目,涵盖了基本算法、数据结构、数学运算等多个方面的知识点。下面是对该资源中出现的知识点的详细解释: 1. 第一次 ACM 总结(7th ACM) 该...
首先,我们可以从这些源代码中学习到基础的算法思想,如排序算法(快速排序、归并排序、冒泡排序、插入排序等)、搜索算法(二分查找、深度优先搜索、广度优先搜索等)。这些算法是解决问题的基本工具,理解和掌握...
深度搜索 回溯 int main { string s1 s2; while cin >> s1 >> s2 { count 0; cout << "[" << endl; if s1 length s2 length BackTrake s1 s2 ;... [更多]
在这个问题中,参赛者需要编写程序来模拟气球爆破的过程,以达到最大化的分数。 首先,我们来理解问题背景。假设你有一系列的气球,每个气球有一个关联的分数,你可以选择用一个针去刺破任意一个气球,然后所有比这...
Problem Arrangement zoj 3777
### ZOJ 题目简单归类解析 在IT竞赛和编程练习中,ZOJ(Zhejiang University Online Judge)平台提供了丰富的算法题目供学习者挑战和提升技能。本次解析将聚焦于部分被标记为“简单”的ZOJ题目,通过细致分析其描述...
《ZOJ 4041问题的正确解法与程序分析》 ZOJ(Zhejiang Online Judge)是一个知名的在线编程竞赛平台,其中的题目编号为4041的题目吸引了众多程序员的关注。本篇文章将深入探讨ZOJ 4041的正确解法,并对提供的源代码...