原题链接

题目大意:书本印刷都是用大开的纸张对折。比如一个册子一共4页,为了方便装订,外侧印刷1、4页,内侧印刷2、3页,这样对折之后就可以按照正常阅读习惯翻页了。此题目的就是给出书的总页数,要求计算每张纸正反面应该印刷什么内容。

解法:不难,但是略微繁琐。先计算需要的纸张数量,然后分别计算正反面的内容。如果书本页码很少,第一张和第二张纸比较特殊,需要单独列出来,其他内页按照公式推算。

参考代码:

#include<iostream>
using namespace std; int main(){
int n,i,j,k,sheet,r; while(cin>>n&&n!=0){
sheet=(n+3)/4;
r=n%4;
cout<<"Printing order for "<<n<<" pages:"<<endl;
i=1;
while(i<=sheet){
cout<<"Sheet "<<i<<", front: ";
if(i==1){
if(n==4)cout<<"4, 1"<<endl;
else if(r!=0)cout<<"Blank, 1"<<endl;
else cout<<n<<", 1"<<endl;
}
else{
if(n<4*(sheet-i)+6)
cout<<"Blank, "<<i*2-1<<endl;
else
cout<<sheet*4-i*2+2<<", "<<i*2-1<<endl;
} if(n==1);
else{
cout<<"Sheet "<<i<<", back : ";
if(i==1){
if(r==1||r==2)cout<<"2, Blank"<<endl;
else if(r==3)cout<<"2, "<<n<<endl;
else cout<<"2, "<<n-1<<endl;
}
else if(i*4-3>n)
cout<<i*2<<", Blank"<<endl;
else
cout<<i*2<<", "<<sheet*4+1-i*2<<endl;
}
i++;
}
} return 0;
}

最新文章

  1. iOS UIWebView 拦截点击事件(双击缩放)
  2. 开启LOH压缩?
  3. .Net Task&lt;T&gt;的一种比较神奇的卡死情况(Wait/Result卡死, await能得到结果)
  4. opencart 引入 TWIG 模板引擎
  5. input自动获取焦点
  6. linux下使用SSL代理(SSLedge)
  7. spring.Net之Ioc在MVC中的使用
  8. 基础C++ functional
  9. 能源项目xml文件 -- app-datasource.xml
  10. FlashBuilder 4.7 破解方法
  11. linux下的rbenv和rails安裝
  12. HDU 1013 Digital Roots(字符串)
  13. 一个mapreduce得到需要计算单词概率的基础数据
  14. Java虚拟机—垃圾收集器(整理版)
  15. linux学习------磁盘性能测试
  16. Python的真和假
  17. Python的命令模式和交互模式
  18. linux第二次读书笔记
  19. mysql指定编码集
  20. 小R的烦恼 BZOJ3280

热门文章

  1. Exif的Orientation信息说明
  2. Python中的random模块
  3. IE7的overflow失效的解决方法
  4. python 绘图工具 matplotlib 入门
  5. DVRF:路由器漏洞练习靶机 Damn Vulnerable Router Firmware
  6. What is the difference Apache (Http Server) and Tomcat (Servlet Container)
  7. 51nod 最长公共子序列Lcs
  8. OD调试篇5--如何应对OD使用中的一些问题
  9. 【Android UI】 Shape详解
  10. Android重写getResources规避用户调整系统字体大小影响Android屏幕适配