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的更多相关文章

  1. 【CJOJ1793】【USACO 4.3.2】素数方阵

    题面 Description 在下面的方格中,每行,每列,以及两条对角线上的数字可以看作是五位的素数.方格中的行按照从左到右的顺序组成一个素数,而列按照从上到下的顺序.两条对角线也是按照从左到右的顺序 ...

  2. CSU训练分类

    √√第一部分 基础算法(#10023 除外) 第 1 章 贪心算法 √√#10000 「一本通 1.1 例 1」活动安排 √√#10001 「一本通 1.1 例 2」种树 √√#10002 「一本通 ...

  3. 欧拉工程第69题:Totient maximum

    题目链接 欧拉函数φ(n)(有时也叫做phi函数)可以用来计算小于n 的数字中与n互质的数字的个数. 当n小于1,000,000时候,n/φ(n)最大值时候的n. 欧拉函数维基百科链接 这里的是p是n ...

  4. 基于eclipse创建android的helloworld工程

    基于eclipse创建android的helloworld工程 之前用过Android studio感觉很慢,决定采用eclipse来学习Android开发.下面来看是怎么创建的. 选择File--- ...

  5. 基于visual Studio2013解决C语言竞赛题之0409 100以内素数

       题目 解决代码及点评 在已经知道素数是怎么判断的基础上,增加循环,可以判断出100以内的素数 /******************************************* ...

  6. 基于visual Studio2013解决C语言竞赛题之0408素数

      题目 解决代码及点评 判断一个数是不是素数的方法,一般是看n是不是能被n以内的某个整数(1除外)整除 为了提高效率,这个整数范围一般缩小到n的平方根 如果在这个范围内的整数都不能整除,那么 ...

  7. 基于visual Studio2013解决C语言竞赛题之0603打印素数

     题目

  8. 基于visual Studio2013解决C语言竞赛题之0601判断素数函数

           题目 解决代码及点评 //编写一函数判断一个数是否为素数 #include<stdio.h> #include <stdlib.h> # ...

  9. 基于visual Studio2013解决C语言竞赛题之0523魔方阵

     题目

随机推荐

  1. hibernate的1+n

    对数据库访问还是必须考虑性能问题的, 在设定了1 对多这种关系之后, 查询就会出现传说中的n +1 问题. 1 )1 对多,在1 方,查找得到了n 个对象, 那么又需要将n 个对象关联的集合取出,于是 ...

  2. eap-md5

    eap-md5       文件路径 用途 示例 备注 #gedit /usr/local/etc/raddb/sites-available/default #gedit /usr/local/et ...

  3. AmazeUI定制

    定制流程 下载 Amaze UI 源码:从 GitHub 选择版本,点击 Source code (zip) 下载并解压(定制只适用于 Amaze UI 2.x): 下载安装 Node.js: 全局安 ...

  4. Fragment的使用(一)

    本篇博客主要讲的是如何使用Fragment. 使用Fragment的步骤类似于自定义View的步骤: 定义Fragment的布局文件 实现扩展Fragment的子类 在扩展子类的onCreateVie ...

  5. Hdu 1004

    ps:很简单的一个字符串处理问题.. 代码: #include "stdio.h" #include "string.h" int find(int flag[ ...

  6. ubuntu 14.04安装搜狗输入法

    安装sougou for linux: 1.从官网http://pinyin.sogou.com/linux/?r=pinyin下载对应版本 2.由于版本原因需要卸载fcitx: sudo apt-g ...

  7. Linux内核分析——理解进程调度时机跟踪分析进程调度与进程切换的过程

    20135125陈智威 +原创作品转载请注明出处 +<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验 ...

  8. jdk 编译器 对final字段的处理

    class FinalTest{     void a(){         final int i=10;         int j=10;     } }            stack=2, ...

  9. VS2012新建项目出错:未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService

    刚刚重新做的系统,第一次打开vs2012新建项目时出现错误提示 通过查找解决办法发现方法有两种: 1:卸载两个windows更新补丁(KB2833957和KB2840642) 2:安装一个window ...

  10. handlebars,each循环里面套each循环

    handlebars可以用each自动进行循环,下面介绍一下each循环里面套循环来着. html代码 !DOCTYPE html> <html> <head> < ...