3519 - 开荒专用闹铃
随着《魔兽世界-德拉诺之王》的正式上线,这个版本加入了要塞等系统,开放了德拉诺大陆,艾泽拉斯的勇士们又开始了新一轮的开荒之旅。
我们的刘安智同学也不甘寂寞的加入了一个开荒团……额但是直到他们要进军德拉诺了,安智同学才发现,原来这个团的团员几乎都是留学生,组队无论是打副本还是屠城存在着严重的时差问题。

但是公会活动不能不参加,刘安智同学便采用了一个闹铃,让它叫醒自己。
于是呢,他按照以下三种规则开始设置闹铃(定个闹铃还按照规则,有病吧):
1. 从<span>00</span><span>:</span><span>00</span><span>开始,每</span><span>15</span><span>分钟设置一个闹铃(这要设置多少个,用个</span><span>for</span><span>循环一次设置完可不可以)。</span>
2. 在分钟以<span>8</span><span>为尾数时,设置闹铃。(某个人喜欢</span><span>8</span><span>这个数字,所以这条规则是可以原谅的对吧)。</span>
3. 每当小时数加1可以被分钟数加1整除的时候,设置闹铃。比如03<span>:</span><span>01</span><span>,</span><span>3+1=4</span><span>,</span><span>1+1=2</span><span>,</span><span>4</span><span>可以被</span><span>2</span><span>整除。</span>
不过他还是不放心,我定的第<span>x</span><span>个闹铃到底应该什么时候响来着?</span>
题目输入
第一行有一个整数n,代表输入实例有n组。接下来的n行,每行一个整数x(保证1<=x<=80),代表第x个闹铃。
题目输出
对于每个整数x,请输出x对应闹铃的时间,时间格式用hh:mm表示。
时钟的时和分始终要保持两位(C语言用printf(“%02d”),C++语言用cout<<setw(2)<<setfill(‘0’),具体用法请看你自己带进来的资料。什么你没准备?请吸取教训充分准备。)
输入/输出样例
题目输入
3 1 3 9
题目输出
00:00 00:15 00:48
C语言解答
#include <stdio.h> int main() { int n; scanf("%d", &n); while(n--) { int min = 0; int hour = 0; int t = 0; int count = 1; scanf("%d", &t); while(count != t) { min ++; if(min == 60) { min = 0; hour ++; } if(hour == 24) { hour = 0; } if(min % 15 == 0) { count ++; }else{ if(min%10 == 8) { count ++; }else{ if((hour+1)%(min+1) == 0) { count ++; } } } } printf("%02d:%02d\n", hour, min); } return 0; }
C++解答
#include <stdio.h> #include <fstream> #include <iostream> #include <iomanip> using namespace std; int main(void) { // ifstream cin; // ofstream cout; // cin.open("g.in"); // cout.open("g.out"); int i=1,hh,mm,n,a[81],b[81]; for(hh=0;i<=80;hh++) for(mm=0;mm<60&&i<=80;mm++) if(mm%15==0||mm%10==8||(hh+1)%(mm+1)==0) { a[i]=hh; b[i]=mm; i++; } cin>>n; while(n--) { int x; cin>>x; cout<<setw(2)<<setfill('0')<<a[x]<<":"<<setw(2)<<setfill('0')<<b[x]<<endl; } return 0; }