素数方阵的工程ing
2016 12 12 16 12
开始
2016 12 13 17 30 还没开打
2017 1 3 .....
一星期前貌似打完了...
如下
#include<iostream>
#include<string>
#include<algorithm>
#include<cstring>
using namespace std;
int s[]={,,,,};
int ww[]={};
int sushu[]={};
int ans[][][];
string a[];
int top=;
int hh[]={};
int num[][]={};
int ss=;
int xx=;
int m,n;
int dfs(int h,int w,int v);
int yyyy()
{
int flag=;
for(int i=;i<=;i++)
{
flag=;
for(int u=;u*u<=i;u++)
if(i%u==){flag=;break;}
if(flag==)
{
sushu[i]=;
}
}
}
int lie (int w)
{
int sum=;
for(int i=;i<=;i++)
{
sum=sum*+num[i][w];
}
return sum;
}
int hang(int w)
{
int sum=;
for(int i=;i<=;i++)
{
sum+=sum*+num[i][w];
}
return sum;
}
void shuang(int h,int w)
{
for(int i=;i<=;i++)
{
if(i==&&w==)continue;
if(h==&&i==)continue;
hh[h]+=i;
ww[w]+=i;
if(h==w)
ss+=i;
if(h+w==)
xx+=i;
num[h][w]=i;
dfs(h,w,i);
num[h][w]=-;
hh[h]-=i;
ww[w]-=i;
if(h==w)
ss-=i;
if(h+w==)
xx-=i;
}
return ;
}
void dan(int h,int w)
{
int i=;
for(int u=;u<=;u++)
{
if(hh[h]+s[u]>n||ww[w]+s[u]>n)
{
break;
}
if(h==w&&ss+s[u]>n)
break;
if(h+w==&&xx+s[u]>n)
break;
i=s[u];
hh[h]+=i;
ww[w]+=i;
if(h==w)
ss+=i;
if(h+w==)
xx+=i;
num[h][w]=i;
dfs(h,w,num[h][w]);
hh[h]-=i;
ww[w]-=i;
num[h][w]=-;
if(h==w)
ss-=i;
if(h+w==)
xx-=i;
}
return;
}
int mj(int h,int w,char y)
{
int sum=;
if(y=='s')
{
for(int i=;i<=;i++)
{
sum=sum*+num[i][w];
}
return(sushu[sum]);
}
if(y=='h')
{
for(int i=;i<=;i++)
{
sum=sum*+num[h][i];
}
return sushu[sum];
}
if(y=='x')
{
int a=,b=;
for(int i=;i<=;i++)
{
sum=sum*+num[b][a];
a++;b--;
}
return sushu[sum];
}
if(y=='z')
{
int a=,b=;
for(int i=;i<=;i++)
{
sum=sum*+num[a][b];
a++;
b++;
}
return sushu[sum];
}
}
int sj(int h,int w,char y)
{
if(y=='s')
{
int s=n-ww[w];
if(s>=&&s<=)
{
num[h][w]=s;
return ;
}
num[h][w]=-;
return ;
}
if(y=='h')
{
int s=n-hh[h];
if(s>=&&s<=)
{
num[h][w]=s;
return ;
}
num[h][w]=-;
return ;
}
if(y=='x')
{
int s=n-xx;
if(s>=&&s<=)
{
num[h][w]=s;
return ;
}
num[h][w]=-;
return ;
}
if(y=='z')
{
int s=n-ss;
if(s>=&&s<=)
{
num[h][w]=s;
return ;
}
num[h][w]=-;
return ;
}
}
void suan(int h,int w,int i)
{
hh[h]+=i;
ww[w]+=i;
if(h==w)
ss+=i;
if(h+w==)
xx+=i;
dfs(h,w,num[h][w]);
hh[h]-=i;
ww[w]-=i;
num[h][w]=-;
if(h==w)
ss-=i;
if(h+w==)
xx-=i;
return ;
}
int dfs(int h,int w,int v)
{
if(hh[h]>n||ww[w]>n||xx>n||ss>n)
{
return ;
}
if(h==&&w==)
{
dan(,);//5,5
}
if(h==&&w==){dan(,);return ;}//(4,5);
if(h==&&w==){dan(,);return ;}//3,5;
if(h==&&w==){dan(,);return ;}//2,5;
if(h==&&w==){if(sj(,,'s')==){if(mj(,,'s')==){num[][]=-;return ;}suan(,,num[][]);return ;}}//disuan 1 5
if(h==&&w==){dan(,);return ;}//5.1;
if(h==&&w==){dan(,);return ;}//5.2;
if(h==&&w==){dan(,);return ;}//5.3;
if(h==&&w==){if(sj(,,'h')==){if(mj(,,'h')==){num[][]=-;return ;}suan(,,num[][]);}return ;}//suan 5,4;
if(h==&&w==){shuang(,);return ;}
if(h==&&w==){shuang(,);return ;}
if(h==&&w==){if(sj(,,'x')==){if(mj(,,'x')==){num[][]=-;return ;}suan(,,num[][]);}return ;}//suan 2 4;
if(h==&&w==){shuang(,);return ;}//2 2;
if(h==&&w==){if(sj(,,'z')==){if(mj(,,'z')==){num[][]=-;return ;}suan(,,num[][]);}return ;}//suan 4 4;
if(h==&&w==){shuang(,);return ;}//1 2;
if(h==&&w==){if(sj(,,'s')==){if(mj(,,'s')==){num[][]=-;return ;}suan(,,num[][]);}return ;}//suan 3 2;
if(h==&&w==){shuang(,);return ;}
if(h==&&w==){if(sj(,,'h')==){if(mj(,,'h')==){num[][]=-;return ;}suan(,,num[][]);}return ;}//suan 3,4;
if(h==&&w==){if(sj(,,'s')==){if(mj(,,'s')==){num[][]=-;return ;}suan(,,num[][]);}return ;}
if(h==&&w==){if(sj(,,'h')==){if(mj(,,'h')==){num[][]=-;return ;}suan(,,num[][]);}return ;}
if(h==&&w==){shuang(,);return ;}
if(h==&&w==){if(sj(,,'h')==){if(mj(,,'h')==){num[][]=-;return ;}suan(,,num[][]);}return ;}
if(h==&&w==){if(sj(,,'s')==){if(mj(,,'s')==){num[][]=-;return ;}suan(,,num[][]);}return ;}
if(h==&&w==)
{
int t=n-hh[];
int w=n-ww[];
if(w!=t)return ;
if(w<=&&w>=)
if(w==t)
{
num[][]=w;
if(mj(,,'s')==&&mj(,,'h')==)
{
top++;
for(int i=;i<=;i++)
{
for(int u=;u<=;u++)
ans[top][i][u]=num[i][u];
}
num[][]=;
}
}
return ;
}
return ;
}
int main()
{ yyyy();
//freopen("a.in","r",stdin);
//freopen("a.out","w",stdout);
memset(num,-,sizeof(num));
cin>>n>>m;
num[][]=m;
hh[]=m;
ww[]=m;
ss=m;
dfs(,,m);
for(int i=;i<=top;i++)
{
for(int u=;u<=;u++)
for(int w=;w<=;w++)
a[i]+=char(ans[i][u][w]+'');
}
sort(a+,a+top+);int w=;
for(int i=;i<=top;i++)
{
w++;
for(int w=;w<a[i].size();w++)
{
cout<<a[i][w];
if((w+)%==)cout<<endl;
}
cout<<endl;
}
return ;
}
//感觉跟lanshen比弱的一批QAQ;
药丸QAQ;
素数方阵的工程ing的更多相关文章
- 【CJOJ1793】【USACO 4.3.2】素数方阵
题面 Description 在下面的方格中,每行,每列,以及两条对角线上的数字可以看作是五位的素数.方格中的行按照从左到右的顺序组成一个素数,而列按照从上到下的顺序.两条对角线也是按照从左到右的顺序 ...
- CSU训练分类
√√第一部分 基础算法(#10023 除外) 第 1 章 贪心算法 √√#10000 「一本通 1.1 例 1」活动安排 √√#10001 「一本通 1.1 例 2」种树 √√#10002 「一本通 ...
- 欧拉工程第69题:Totient maximum
题目链接 欧拉函数φ(n)(有时也叫做phi函数)可以用来计算小于n 的数字中与n互质的数字的个数. 当n小于1,000,000时候,n/φ(n)最大值时候的n. 欧拉函数维基百科链接 这里的是p是n ...
- 基于eclipse创建android的helloworld工程
基于eclipse创建android的helloworld工程 之前用过Android studio感觉很慢,决定采用eclipse来学习Android开发.下面来看是怎么创建的. 选择File--- ...
- 基于visual Studio2013解决C语言竞赛题之0409 100以内素数
题目 解决代码及点评 在已经知道素数是怎么判断的基础上,增加循环,可以判断出100以内的素数 /******************************************* ...
- 基于visual Studio2013解决C语言竞赛题之0408素数
题目 解决代码及点评 判断一个数是不是素数的方法,一般是看n是不是能被n以内的某个整数(1除外)整除 为了提高效率,这个整数范围一般缩小到n的平方根 如果在这个范围内的整数都不能整除,那么 ...
- 基于visual Studio2013解决C语言竞赛题之0603打印素数
题目
- 基于visual Studio2013解决C语言竞赛题之0601判断素数函数
题目 解决代码及点评 //编写一函数判断一个数是否为素数 #include<stdio.h> #include <stdlib.h> # ...
- 基于visual Studio2013解决C语言竞赛题之0523魔方阵
题目
随机推荐
- 打造基于CentOS7的xfce最简工作环境
参考这里:http://blog.csdn.net/smstong/article/details/44802989没成功. 又参考这里http://jensd.be/125/linux/rhel/i ...
- hdu 1503, LCS variants, find a LCS, not just the length, backtrack to find LCS, no extra markup 分类: hdoj 2015-07-18 16:24 139人阅读 评论(0) 收藏
a typical variant of LCS algo. the key point here is, the dp[][] array contains enough message to de ...
- aspx文件为什么会慢
你可以在 global.asax 的 Application_Start 方法中写一个日志,例如写 C# code ? 1 2 3 4 5 void Application_Start(objec ...
- Octave安装和使用
1. Installer Download octave4.0 gnuplot 5.0.4 2. Installation (1) Octave 安装Octave时提示发现系统装有Win8,继续安装 ...
- 通过docker-machine和etcd部署docker swarm集群
本片文章介绍一下 使用docker-machine 搭建docker swarm 集群:docker swarm是docker 官方搭建的容器集群编排工具:容器编排,就是可以使你像使用一太机器一样来使 ...
- 用手机自带uc浏览器查看静态页面,css样式不显示
问题描述: 这个问题是一个同事在写手机页面用UC浏览器测试以后遇到的,其他浏览器静态页面显示正常,唯独UC浏览器不显示页面样式. 我测试过代码是没有问题的,因为临时没有找到安卓手机,就猜想PC端的应该 ...
- codeforces 723E (欧拉回路)
Problem One-Way Reform 题目大意 给一张n个点,m条边的无向图,要求给每条边定一个方向,使得最多的点入度等于出度,要求输出方案. 解题分析 最多点的数量就是入度为偶数的点. 将入 ...
- JAVA(3)
接口注意事项: 1.接口不能被实例化 2.接口中所有的方法都不能有主体 (不能有{ }) 3.一个类可以实现多个接口 4.接口中可以有变量<但变量不能用private和protected修饰& ...
- linux 下 C语言显示中文
例如:tset.c int main() { printf("你好,世界\n"); retuen 0; } 编译时应该这样: iconv -f gb2312 -t utf8 tes ...
- android安全测试 APP要点解析
评估思路 移动APP面临的威胁 风起云涌的高科技时代,随着智能手机和iPad等移动终端设备的普及,人们逐渐习惯了使用应用客户端上网的方式,而智能终端的普及不仅推动了移动互联网的发展,也带来了移动应用的 ...