文章目录
A.Dislike of Threes
传送门
思路:这就是个水题,跑一遍就行,把能被3整除和最后一位是3的判断一下就行
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
#include<stack>
#include <limits>
#include<string>
#include<deque>
#include<map>
#include<bitset>
#include<set>
#include<cstdio>
#include<vector>
#define ll long long
#define PI 3.141592653589793
#define E 2.718281828459045
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
#define mem(a,b) memset(a,b,sizeof(a))
#define FOR( i , a , b ) for ( int i = a ; i <= b ; ++ i )
#define FO( i , n ) for ( int i = 0 ; i < n ; ++ i )
#define lowbit(a) ((a)&-(a))
typedef unsigned long long ull;
const ll mod=10007;
const ll INF=0x3f3f3f3f;
const ll Max=10000;
using namespace std;
int t,n,m;
int a[1010];
/*queue<ll> q;
stack<ll> s;
//升序队列
priority_queue <int,vector<int>,greater<int> > q;
//降序队列
priority_queue <int,vector<int>,less<int> >q;*/
int main()
{
scanf("%d",&t);
int k=1;
for(int i=1;k<1001;i++)
if(i%3!=0&&i%10!=3)
a[k++]=i;
while(t--)
{
cin>>n;
cout<<a[n]<<endl;
}
return 0;
}
B.Who’s Opposite?
传送门
题目大意:有T个数据,输入a,b,c,已知两个的数a,b是相对的,若能构成环(是按顺序排的),则输出c相对的数,不能构成则输出-1
思路:相对的差的绝对值(n)的二倍就是能构成的,环的长度,则a,b,c都不能大于环的长度,如果c>n(环的一半),则它相对的是c-n,c=<n则是c+n
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
#include<stack>
#include <limits>
#include<string>
#include<deque>
#include<map>
#include<bitset>
#include<set>
#include<cstdio>
#include<vector>
#define ll long long
#define PI 3.141592653589793
#define E 2.718281828459045
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
#define mem(a,b) memset(a,b,sizeof(a))
#define FOR( i , a , b ) for ( int i = a ; i <= b ; ++ i )
#define FO( i , n ) for ( int i = 0 ; i < n ; ++ i )
#define lowbit(a) ((a)&-(a))
typedef unsigned long long ull;
const ll mod=10007;
const ll INF=0x3f3f3f3f;
const ll Max=10000;
using namespace std;
ll t,n,m;
/*queue<ll> q;
stack<ll> s;
//升序队列
priority_queue <int,vector<int>,greater<int> > q;
//降序队列
priority_queue <int,vector<int>,less<int> >q;*/
int main()
{
scanf("%lld",&t);
while(t--)
{
ll a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
n=abs(a-b);
if(c>2*n||a>2*n||b>2*n)
printf("-1\n");
else {if(c>n)
{
printf("%lld\n",c-n);
}else printf("%lld\n",c+n);
}
}
return 0;
}
C.Infinity Table
传送门
题目大意:
思路:把数分成若干部分,每个部分是L(镜像一下)的部分,并且这个部分(除本身就是平方数)的开方是相同的,并且根据水平和竖着的拐角可以分为两部分,对这4部分进行特判就行,还有某些关系,直接看代码吧,挺好理解的,就是得细心,我就粗心,WA了两次,烦
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
#include<stack>
#include <limits>
#include<string>
#include<deque>
#include<map>
#include<bitset>
#include<set>
#include<cstdio>
#include<vector>
#define ll long long
#define PI 3.141592653589793
#define E 2.718281828459045
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
#define mem(a,b) memset(a,b,sizeof(a))
#define FOR( i , a , b ) for ( int i = a ; i <= b ; ++ i )
#define FO( i , n ) for ( int i = 0 ; i < n ; ++ i )
#define lowbit(a) ((a)&-(a))
typedef unsigned long long ull;
const ll mod=10007;
const ll INF=0x3f3f3f3f;
const ll Max=100000;
using namespace std;
ll t,n,m;
/*queue<ll> q;
stack<ll> s;
//升序队列
priority_queue <int,vector<int>,greater<int> > q;
//降序队列
priority_queue <int,vector<int>,less<int> >q;*/
int main()
{
scanf("%lld",&t);
while(t--)
{ ll i;
scanf("%lld",&n);
ll s=sqrt(n);
if(n==s*s)
printf("%lld 1\n",s);
else
if(n==(s*s)+s+1)
printf("%lld %lld\n",s+1,s+1);
else if(n<(s*s)+s+1)
{
for( i=1;i<=s;i++)
if(s*s+i==n)
break;
printf("%lld %lld\n",i,s+1);}
else if(n>(s*s)+s+1){
{for( i=1;i<s;i++)
if((s+1)*(s+1)-i==n)
break;
}printf("%lld %lld\n",s+1,i+1);
}
}
return 0;
}