[提交][状态][讨论版]

题目描述

lw最近正在学习立体化学。立体化学中常用Fischer投影式表示分子的立体构型,例如,对于酒石酸HOOC(CHOH)2COOH,如果用一根横线表示羟基,略去氢原子,它有22=4种可能的Fischer投影式,如图所示。

然而,酒石酸的立体异构体数目并不是4,因为Fischer投影式具有一个奇怪的性质:将其在纸面上旋转180度后,仍然表示一个相同的立体异构体。例如,上图中第0和第3个(从左往右数,编号从0开始)Fischer投影式其实表示同一种立体异构体。

那么问题来了:对于糖酸HOOC(CHOH)nCOOH,它有多少不同的立体异构体呢?


更形式化地,本题就是:用2种颜色对排成一排的n个方块染色,将所有方块的顺序颜色都反转,得到的染色方案与原染色方式视为等价的,那么有多少种不同的染色方案?

由于答案很大,而且lw很讨厌高精度,你只要输出答案对1000000007的模即可。

输入

多组数据(最多1000组)。每组数据1行,包含整数n。

输入保证:1<=n<=109

输出

对于每组数据,输出1行,包含1个整数,即答案模1000000007。

 
--正文
没有最后的说明估计我就做不来这题了。。
先写几个看看就懂了
如果不管等价的,所有的方案是2^n
n为奇数的时候,
  易知没有可能有自身排列与倒转后相等的染色方案,所以方案数为2^(n-1)
n为偶数的时候
  可能存在自身排列在倒转转色后与原排列的染色方案
  以染红色为0,染白色为1,
  1100 -》 倒转变色后 1100 就是一种
  可以发现第一位与最后一位是10(或01)对应的,同理一直到n/2位,所以其实就在n/2里随意排列0,1
  所以这样的染色方案共有2^(n/2)种
  其他的染色方案在2^n都重复了两次
  所有最终的结果就是2^(n/2) + (2^n - 2^(n/2)) / 2

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; typedef long long LL;
#define MOD 1000000007
LL Fast_Mod(LL a,LL b,LL p){
LL res = ,base = a;
while (b){
if (b&)
res = (res*base) % p;
base = (base*base) % p;
b = b >> ;
}
return res;
} LL n; int main(){
while (scanf("%lld",&n)!= EOF){
if (n % == ){
LL tmp1 = Fast_Mod(,n/,MOD) % MOD;
LL tmp2 = Fast_Mod(,n-,MOD) % MOD;
LL tmp3 = Fast_Mod(,n/-,MOD) % MOD;
LL res = (tmp1 + tmp2 - tmp3 + MOD) % MOD;
printf("%lld\n",res);
}
else
printf("%lld\n",Fast_Mod(,n-,MOD));
}
return ;
}
 

XidianOJ 1063 Chemistry Problem的更多相关文章

  1. XidianOJ 1183 Water Problem: Items divided

    题目描述 Youyouyouyou is very interested in math, one day, an idea came into his mind that how many ways ...

  2. 暴力 + 贪心 --- Codeforces 558C : Amr and Chemistry

    C. Amr and Chemistry Problem's Link: http://codeforces.com/problemset/problem/558/C Mean: 给出n个数,让你通过 ...

  3. XidianOJ 1099 A simple problem

    题目描述 一个长度为N的数组A, 所有数都是整数 ,0 <= A[i] <= 1000000,1 <= i <= N,1 <= N <= 100000,对于 任意i ...

  4. Codeforces Round #312 (Div. 2) C. Amr and Chemistry 暴力

    C. Amr and Chemistry Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/558/ ...

  5. HDU-5347 MZL's chemistry

    http://acm.hdu.edu.cn/showproblem.php?pid=5347 MZL's chemistry Time Limit: 2000/1000 MS (Java/Others ...

  6. lightoj 1063 求割点

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1063 #include<cstdio> #include<cstri ...

  7. hdu5347 MZL's chemistry(打表)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud MZL's chemistry Time Limit: 2000/1000 MS ...

  8. BZOJ 1063 道路设计NOI2008

    http://www.lydsy.com/JudgeOnline/problem.php?id=1063 题意:给你一棵树,也有可能是不连通的,把树分成几个链,求每个点到根经过的最大链数最小,而且要输 ...

  9. hdu 5625 Clarke and chemistry

    Problem Description Clarke is a patient with multiple personality disorder. One day, Clarke turned i ...

随机推荐

  1. HTML中strong与b,em与i标签的区别

    先看效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  2. 【学】React的学习之旅2 - React Component的生命周期

    分成三个状态: Mounted Update Unmounted Mounted:当我们看到组件在浏览器中从无到有的效果的时候,mounted已经结束了,这个组件已经被mounted了 有这个阶段有2 ...

  3. Linux通过NAT方式配置网络

    步骤:1.将虚拟机的网卡VMware Network Adapter VMnet8改成DHCP自动获取IP.2.将Linux虚拟机的网卡自定义连接到VMware Network Adapter VMn ...

  4. 设计模式-GoF

    资源: 下载GOF的书籍: http://download.csdn.net/download/quanbove/6534569 这里总结了模式,但讲的并不准确: http://www.runoob. ...

  5. 在shiro-cas中实现 Jasig-cas的Single Sign Out 功能

    1 Single Sign Out 功能 即单点登出功能.也就是在任意子系统进行登出操作后,其他子系统会自动登出. 实际CAS登出的步骤为 所以每个子系统都需要实现一个sso登出响应. cas-cli ...

  6. 成功部署SSIS中含有Oracle数据库连接的ETL包

    RT,正式写之前,我想说,真TMD不容易!!! 写博客,责任心,很重要 在百度搜出来的内地博客技术文章(CSDN.ITEYE.CNBLOGS……),大部分都是不全面,只针对一个遇到的问题点的记录,可以 ...

  7. pointer on c

    http://blog.csdn.net/daniel_ice/article/details/6857019 http://www.cppblog.com/cuigang/archive/2008/ ...

  8. LEMP安装脚本

    #!/bin/bash#LEMP Serverumount /dev/cdrommount /dev/cdrom /mediaIOS="/etc/yum.repos.d/rhel-debug ...

  9. Linux中exit与_exit的区别

    在exit,_exit的区别 - exit()与_exit()函数的区别(Linux系统中)2012-03-20 15:19:53 分类: LINUX 注:exit()就是退出,传入的参数是程序退出时 ...

  10. VBA_Excel_教程:单元格颜色

    Sub SetCellColor() '设置单元格颜色 Sheet1.Cells(, ).Interior.ColorIndex = End Sub