素数方阵的工程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魔方阵
题目
随机推荐
- hihoCoder#1014
刚开始学习C语言,准备在做hiho的题目的过程中来学习,在此进行记录,如果代码中有错误或者不当的地方还请指正. 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小 ...
- 黑马程序员——C语言基础 char字符 数组
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)char类型 1)存储细节 ASCII单字节表(双字节GBK\GB2 ...
- AX2012自定义注释脚本开发
废话少说,直接进入主题: 1.在类xppSource中增加一个类似的方法: eg. Source ifElse(Source _condition = '', Source _ifStatement ...
- break continue 区别 以及实例
不论是MATLAB.c/c++.c#还是其他类型的编程语言,我们总是避免不了和for循环以及switch语句打交道,而对循环进行优化的时候,又总是避免不了用到break以及continue来控制循环, ...
- 计算机●编程语言●JAVA
<Java编程思想(第4版)> 2016-04-27 12:38 ☆ 对JAVA知识面比较全的介绍.但也只是介绍,没有进入主题好好分析透彻.所以适合有几年工作经验的java码农(虽然 ...
- pb自动注册ole控件
方法一: 1.手工注册OCX控件 将该控件随程序一起发布,然后,将此文件拷到windows\system,或者直接放在本运行目录,然后执行dos命令,run( "regsvr32 *. ...
- 使用windows crypt API解析X509证书
一.版本号 结构体CERT_INFO中的字段dwVersion即为证书版本,可以直接通过下面的代码获得: DWORD dwCertVer = m_pCertContext->pCertInfo- ...
- Maven项目下java.lang.ClassNotFoundException的解决方法
问题背景: Maven的project下,项目中已经引用了相应的jar包.Java class中没有语法错误,在执行时报ClassNotFound.检查了Maven的pom.xml,依赖引入正常. 错 ...
- pip 下载慢
经常在使用Python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以我们最好是将自己使用的pip源更换一下,这样就能解决被墙导致的装不上库的 ...
- jQuery $.each用法[转]
jQuery $.each用法 以下内容非原创,来自百度文库http://wenku.baidu.com/view/4796b6145f0e7cd18425368e.html 通过它,你可以遍历对象. ...