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. tensor flow入门笔记

    个人学习笔记,欢迎交流.

  2. runtime学习实战一:类的属性进行归档解档

    #import <Foundation/Foundation.h> @interface PYPerson : NSObject @property (nonatomic, assign) ...

  3. 网卡故障:弹出界面eth0: 错误:没有找到合适的设备:没有找到可用于链接System eth0 的

    原文地址:http://www.mamicode.com/info-detail-112000.html 报错截图如下: 排错步骤如下: 1:查看系统是否识别相应网卡(发现没有eth0网卡存在): 根 ...

  4. 使用PHPExcel导出文件

    使用PHPExcel导出文件步骤及解析: 新建一个excel表格:实例化PHPExcel类 创建sheet(内置表):createSheet()方法,创建新的sheet方法 setActiveShee ...

  5. css3--布局正六边形

    怎样布局正六边形?-->如果不能直接布局,就只能采用图形的组合.-->既然是正六边形,则: -->AB=2分之根号3乘2倍的边长,也就是对于矩形ABCD来说,AB是BD的根号3倍(也 ...

  6. fzu2028

    //Accepted 7324 KB 203 ms /* source:fzu2028 time :2015.5.29 by :songt */ /*题解: 树链剖分 单点更新,求路径和 */ #in ...

  7. RS232,RS422串口标准小结

    RS232和RS422都是广泛使用的异步串行接口标准.由于它们实现简单且占用IO口资源少,在低速传输下是不错的方案. RS232是单端走线,最高波特率为115200,传输最远距离不超过150米,它的逻 ...

  8. JAVA 语法基础综合练习——学生成绩管理系统

    代码如下:package com.lovo.manager; import java.util.Scanner; /** * 学生管理 * * @author Administrator * */ p ...

  9. DotNetOpenAuth使用笔记

    首先查了一些资料: DotNetOpenAuth源码 https://github.com/DotNetOpenAuth/DotNetOpenAuth 永远的阿哲分享的经验和Demo http://w ...

  10. Html 之菜单导航(二)

    网页菜单 网页菜单是一个网页的重要部分,它提供了用户可以对网站所有页面的导航,也是可能是内容的分类,例如淘宝  衣服 鞋子 水果 电脑 等等之类,也可以是 类似于游戏宣传网页一样子,酷炫的js特效 f ...