2014江西理工大学C语言程序竞赛高级组
Beautiful Palindrome Number
题意:求N里面有多少个符合要求的数字(数字要求:回文数,且前一半部分是不严格递增)
解法:打表
#include<bits/stdc++.h>
using namespace std;
int find1(int index)
{
int count1 = ;
int number = ; //记录数位上的回文数,如个位回文数为9
int w = ; //记录数位 long half; //保存回文数的左半边的结果
long h = ; //回文数的左半边的起始基数
long res; //结果 while(true)
{
if(w > && w% == ) //每进两个数位,回文数乘以10
{
number *= ;
}
w++; //数位加一
if(count1 + number > index) //回文数大于查找的回数,跳出
break; count1+= number; //回文数加上当前数位上的回文数
} index -= count1; //在当前数位上的位置。如w=5,index=50,则万位上的第50个回文数是我们所求 for(int i = ; i < (w-) / ; i++) //求回文数的左半边的基数,如回文数在万位上,则为100
{
h *= ;
} half = h + index; //回文数的左半边,如100 + 50 = 150 res = half; if(w% != ) //如果为奇数,则中间那个数不必算入右半边了!
half /=; while(half != ) //拼接回文数
{
res = res * + half % ;
half /= ;
} return res;
}
int cmd(int x)
{
int cot=;
int a[];
while(x)
{
a[cot++]=x%;
x/=;
}
int pos=a[];
if(cot%==)
{
for(int i=; i<cot/; i++)
{
if(pos<=a[i])
{
pos=a[i];
}
else
{
return ;
}
}
}
else
{
for(int i=; i<=cot/; i++)
{
if(pos<=a[i])
{
pos=a[i];
}
else
{
return ;
}
}
} return ;
}
int a[]={,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
,};
int main()
{
int t;
int n;
cin>>t;
while(t--)
{
cin>>n;
for(int i=;;i++)
{
if(a[i]==) break;
else if(a[i]>n)
{
cout<<i<<endl;
break;
}
}
}
return ;
}
五子棋
解法:其实不难,判断却非常复杂,首先当然只要判断是否成为5子。然后判断黑白棋的个数是否满足要求,接下来判断是白子后下还是黑子后下。再根据这两种情况判断,具体看代码判断
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int ans[][];
//int n,m,a,b;
int Min=(1e9);
string a[];
int x1,x2,x3,x4,x5,x6,x7,x8;
int cmd(char s)
{
int M=-;
for(int i=; i<; i++)
{ for(int j=; j<; j++)
{
x1=,x2=,x3=,x4=,x5=,x6=,x7=,x8=;
if(a[i][j]==s)
{
//cot1++;
// cout<<"/"<<endl;
int ans1=i;
int ans2=j;
while(ans1>=)
{
if(a[ans1][j]==s)
{
// a[i][ans2]='.';
ans1--;
x1++;
}
else
{
break;
}
}
// cout<<x1<<"A"<<endl;
ans1=i;
ans2=j;
//cout<<ans1<<" "<<ans2<<endl;
while(ans1<)
{
if(a[ans1][j]==s)
{
// a[ans1][j]='.';
ans1++;
x2++;
}
else
{
break;
}
}
// cout<<x2<<"B"<<endl;
ans1=i;
ans2=j;
while(ans2>=)
{
if(a[i][ans2]==s)
{
// a[i][ans2]='.';
ans2--;
x3++;
}
else
{
break;
}
}
// cout<<x3<<"C"<<endl;
ans1=i;
ans2=j;
while(ans2<)
{
// cout<<i<<" "<<ans2<<endl;
// cout<<a[i][ans2]<<endl;
if(a[i][ans2]==s)
{
// cout<<"A"<<endl;
// a[i][ans2]='.';
ans2++;
x4++;
}
else
{
break;
}
}
//cout<<x4<<"D"<<endl;
ans1=i;
ans2=j;
while(ans1>=&&ans2>=)
{
if(a[ans1][ans2]==s)
{
// a[ans1][ans2]='.';
ans1--;
ans2--;
x5++;
}
else
{
break;
}
}
//cout<<x5<<endl;
ans1=i;
ans2=j;
while(ans1<&&ans2<)
{
if(a[ans1][ans2]==s)
{
// a[ans1][ans2]='.';
ans1++;
ans2++;
x6++;
}
else
{
break;
}
}
//cout<<x6<<endl;
ans1=i;
ans2=j;
while(ans1>=&&ans2<)
{
if(a[ans1][ans2]==s)
{
// a[ans1][ans2]='.';
ans1--;
ans2++;
x7++;
}
else
{
break;
}
}
// cout<<x7<<endl;
ans1=i;
ans2=j;
while(ans1<&&ans2>=)
{
if(a[ans1][ans2]==s)
{
//a[ans1][ans2]='.';
ans1++;
ans2--;
x8++;
}
else
{
break;
}
}
// cout<<x1<<" "<<x2<<endl;
// cout<<x3<<" "<<x4<<endl;
// cout<<x5<<" "<<x6<<endl;
// cout<<x7<<" "<<x8<<endl;
//cout<<x8<<endl;
M=max({x1+x2-,x3+x4-,x5+x6-,x7+x8-,M});
} }
// M=-1;
}
if(M>=)
{
return ;
}
else
{
return ;
}
}
int cmp(char s)
{
for(int i=; i<; i++)
{
for(int j=; j<; j++)
{
if(a[i][j]==s)
{
a[i][j]='.';
for(int k=; k<; k++)
{
//cout<<a[k]<<endl;
}
// cout<<cmd(s)<<endl;
if(!cmd(s))
{
return ;
}
// cout<<endl;
a[i][j]=s;
}
}
}
return ;
}
int main()
{ int t;
cin>>t;
while(t--)
{
x1=,x2=,x3=,x4=,x5=,x6=,x7=,x8=;
int M=-;
int cot1=;
int cot2=;
int N=-;
for(int i=; i<; i++)
{
cin>>a[i];
for(int j=; j<; j++)
{
if(a[i][j]=='@')
{
cot1++;
}
else if(a[i][j]=='X')
{
cot2++;
}
}
}
if(cot2==cot1+ || cot1 == cot2)
{
int wb = cmd('X');
int ww = cmd('@');
if(cot2==cot1+ && wb)
{
if(ww)
cout << "wrong state" << endl;
else
{
if(cmp('X'))cout << "black" << endl;
else cout << "wrong state" << endl;
}
}
else if(ww && cot1 == cot2)
{
if(wb)
cout << "wrong state" << endl;
else
{
if(cmp('@'))cout << "white" << endl;
else cout << "wrong state" << endl;
}
}
else if(!wb && !ww)cout << "continue" << endl;
else cout << "wrong state" << endl;
}
else cout << "wrong state" << endl;
}
return ;
}
丁丁历险记
解法:数据不大,跑最短路,再求1-A到A+B哪一个更短
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int ans[][];
int n,m,a,b;
int Min=(1e9);
int main()
{
int t;
cin>>t;
while(t--)
{
for(int i=; i<=; i++)
{
for(int j=; j<=; j++)
{
ans[i][j]=Min;
}
}
cin>>a>>b>>m;
for(int i=;i<=m;i++)
{
int s,e;
cin>>s>>e;
if(s!=e)
{
ans[s][e]=;
ans[e][s]=;
}
ans[s][s]=;
ans[e][e]=;
}
for(int k=; k<=a+b; k++)
{
for(int i=; i<=a+b; i++)
{
for(int j=; j<=a+b; j++)
{
ans[i][j]=min(ans[i][j],ans[i][k]+ans[k][j]);
}
}
}
int M=(1e9);
for(int i=;i<=a;i++)
{
M=min(ans[i][a+b],M);
}
if(M==(1e9))
{
puts("No");
}
else
cout<<M<<endl;
}
return ;
}
平行四边形
解法:数学,重点是知道a,b,c,d是干什么的
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
int n;
int t;
cin>>t;
while(t--)
{
int a,b,c,d;
int sum=;
cin>>a>>b>>c>>d;
for(int i=;i<d;i++)
{
if(i*c%d==)
{
sum+=b-;
}
else
{
sum+=b;
}
}
cout<<sum<<endl;
}
return ;
}
木木换班
解法:结构体排序
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct P
{
int a,b;
}He[];
bool cmd(P x,P y)
{
if(x.b==y.b)
{
return x.a<y.a;
}
return x.b>y.b;
}
int main()
{
int t;
int n;
cin>>t;
while(t--)
{
cin>>n;
for(int i=;i<=n;i++)
{
cin>>He[i].a>>He[i].b;
}
sort(He+,He+n+,cmd);
for(int i=;i<=n;i++)
{
// cout<<He[i].a<<" "<<He[i].b<<endl;
}
cout<<He[].a+He[].b<<endl;
}
return ;
}
0.333333333......
解法:a*100000....%b然后xjb求
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
double a,b;
cin>>a>>b;
double s=a/b*1.0;
s*=;
// cout<<s<<endl;
ll s1=(ll)s;
// cout<<s1<<endl;
if(abs(s1-s)<=1e-)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
// printf("[%d,%d]\n",a-1,b-1);
}
return ;
}
定义域
解法:没啥好说的
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int a,b;
cin>>a>>b;
printf("[%d,%d]\n",a-,b-);
}
return ;
}
2014江西理工大学C语言程序竞赛高级组的更多相关文章
- 2014江西理工大学C语言程序竞赛初级组
坐公交 解法:略 #include<stdio.h> #include<string> #include<iostream> #include<math.h& ...
- 2014江西理工大学C语言程序设计竞赛高级组题解
1001 Beautiful Palindrome Number 枚举回文数字前半部分,然后判断该数字是否满足,复杂度为O(sqrt(n))! 1002 Recovery Sequence 本题的核 ...
- 2017年江西理工大学C语言程序设计竞赛(高级组)
问题 A: 求近似值 #include <stdio.h> #include <time.h> #include <stdlib.h> using namespac ...
- 2018年江西理工大学C语言程序设计竞赛(高级组) 三角平方数
题目描述 三角数:形如图a,圆点摆放成等边三角形的数字,则为三角数. (图a) 平方数:形如图b,小方块摆放成正方形的数字,则为平方数. (图b) 那么如果一个数字既是三角形数又是平方数,则称为三角平 ...
- 2018年江西理工大学C语言程序设计竞赛高级组部分题解
B Interesting paths 考察范围:组合数学 此题是机器人走方格的变种,n*m的网格,从(1,1)走到(n,m),首先可以明确,水平要走m-1格,竖直要走n-1格,则走到目的地的任意一条 ...
- 2018年江西理工大学C语言程序设计竞赛(初级组)一
C语言竞赛初级组第一.二场答案:https://www.cnblogs.com/xingkongyihao/p/10046918.html A: 逆序对 时间限制: 1 s 内存限制: ...
- 2017年江西理工大学C语言程序设计竞赛(初级组)
问题 A: Petr的盒子(初) #include <iostream> #include <stdio.h> #include <algorithm> using ...
- 2016年江西理工大学C语言程序设计竞赛(高级组)
问题 A: jxust 解法:争议的问题(是输入整行还是输入字符串),这里倾向输入字符串,然后判断是否含有jxust就行 #include<bits/stdc++.h> using nam ...
- 2015年江西理工大学C语言程序设计竞赛(高级组)
A 解法:DP+二分 dp[i]=max(dp[i],dp[j]+p[i].v)(i>j) dp[i]表示建立i点之后能够获得的最大值 int n,M; struct node { int l, ...
随机推荐
- 位置式PID与增量式PID算法
位置式PID与增量式PID算法 PID控制是一个二阶线性控制器 定义:通过调整比例.积分和微分三项参数,使得大多数的工业控制系统获得良好的闭环控制性能. 优点 ...
- UML: 对象图
摘自http://www.umlonline.org/school/thread-33-1-1.html Line表示类,line为Line的对象,下划线表明为对象,一般对象图用不到. 除了静态方法, ...
- mvc3在window 7 iis7下以及 xp iis 5.1下的部署 ,asp.net MVC3无法打开项目文件E:/我们的项目/Project/HeatingMIS.Web/HeatingMIS.Web.csproj”。此安装不支持该项目类型。
今天,小白来总结一下我在is上部署mvc3 .net 网站的时候的过程和遇到的问题. 其实,mvc的网站的部署跟平常的网站的部署都是一样的,只是下面有一些需要注意的地方. 1.应用程序池采用集成模式( ...
- MYSQL数据库自动本地/异地双备份/MYSQL增量备份
构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图 继续介绍Linux服务器文件备份,数据库备份,数据安全存储相关的电子商务系统架构.针对安全性有多种多样的解决方案,其中数据备份是 ...
- EXTJS 5 开发环境搭建
WEBstrom eclipse下载: http://www.eclipse.org/downloads/ spket 下载: 安装方式: http://wangke0611.iteye.com/bl ...
- unable to connect to the virtual device Genymotion 神器启动问题
截图: 解决方法:win7以上用户在桌面找到:网络--右键(属性)--更改适配器设置--VirtualBox Host-Only Network--属性--双击:Internet 协议版本4(TCP/ ...
- oracle的会话(session)
会话(session)是oracle服务器对数据库连接用户记录的一种手段. oracle提供了v_$session的视图存储当前数据库的会话,查询时用v_$session 或v$session sql ...
- 夺命雷公狗---微信开发58----微网站之jquery_mobile之控件介绍
我们上一节课里面介绍了基本的jqm是如何用的了,那么这一节课我们就开始玩玩他的控件 1...布局网格 <!DOCTYPE html> <html> <head> & ...
- JSP-04- 实现数据的保存
.1 Session 一段时间内,单个客户与Web服务器的一连串相关的交换过程. Ø 4.1.1 应用的场景: 用户登录后保存用户状态 确定用户的唯一 Sessin.getId(); Ø ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON color_fuses2
zw版[转发·台湾nvp系列Delphi例程]HALCON color_fuses2 procedure TForm1.Button1Click(Sender: TObject);var w, h : ...