A 1015 Reversible Primes

  看清题意即可。给的数是十进制的,需要先判断是不是素数,然后按照给定进制转化成字符串后进行翻转,最后再转化为十进制并判断是否为素数。

 #include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstdlib>
#include <cmath>
#include <cstring>
using namespace std; int N, D;
char numStr[];
bool isPrime(int tmpNum)
{
if(tmpNum < )
return false;
int maxNum = sqrt(1.0*tmpNum);
for(int i = ; i <= maxNum; ++ i)
if(tmpNum % i == )
return false;
return true;
}
int strToNum()
{
int len = strlen(numStr), tmpNum = ;
for(int i = ; i < len; ++ i)
{
tmpNum = tmpNum*D + numStr[i]-'';
}
return tmpNum;
}
int main()
{
int tmpNum;
while(scanf("%d%d", &N, &D) != EOF && N >= )
{
if(!isPrime(N))
{
cout << "No" << endl;
continue;
}
for(int i = ; N > ; ++ i)
{
numStr[i] = N % D + '';
N /= D;
numStr[i+] = '\0';
}
tmpNum = strToNum();
if(!isPrime(tmpNum))
cout << "No" << endl;
else
cout << "Yes" << endl;
}
return ;
}

A 1016 1016 Phone Bills

 因为存在无效的记录,所以需要将他们先进行配对。处理方法是:按照名字和时间进行排序,然后筛选出所需要的记录再进行下一步处理。

 超时问题:每一个有效时间段的话费计算需要尽量减少计算量。

以下是柳婼精简的代码:

 #include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
struct node {
string name;
int status, month, time, day, hour, minute;
};
bool cmp(node a, node b) {
return a.name != b.name ? a.name < b.name : a.time < b.time;
}
double billFromZero(node call, int *rate) {
double total = rate[call.hour] * call.minute + rate[] * * call.day;
for (int i = ; i < call.hour; i++)
total += rate[i] * ;
return total / 100.0;
}
int main() {
int rate[] = {}, n;
for (int i = ; i < ; i++) {
scanf("%d", &rate[i]);
rate[] += rate[i];
}
scanf("%d", &n);
vector<node> data(n);
for (int i = ; i < n; i++) {
cin >> data[i].name;
scanf("%d:%d:%d:%d", &data[i].month, &data[i].day, &data[i].hour, &data[i].minute);
string temp;
cin >> temp;
data[i].status = (temp == "on-line") ? : ;
data[i].time = data[i].day * * + data[i].hour * + data[i].minute;
}
sort(data.begin(), data.end(), cmp);
map<string, vector<node> > custom;
for (int i = ; i < n; i++) {
if (data[i].name == data[i - ].name && data[i - ].status == && data[i].status == ) {
custom[data[i - ].name].push_back(data[i - ]);
custom[data[i].name].push_back(data[i]);
}
}
for (auto it : custom) {
vector<node> temp = it.second;
cout << it.first;
printf(" %02d\n", temp[].month);
double total = 0.0;
for (int i = ; i < temp.size(); i += ) {
double t = billFromZero(temp[i], rate) - billFromZero(temp[i - ], rate);
printf("%02d:%02d:%02d %02d:%02d:%02d %d $%.2f\n", temp[i - ].day, temp[i - ].hour, temp[i - ].minute, temp[i].day, temp[i].hour, temp[i].minute, temp[i].time - temp[i - ].time, t);
total += t;
}
printf("Total amount: $%.2f\n", total);
}
return ;
}

最新文章

  1. [C#项目开源] MongoDB 可视化管理工具 (2011年10月-至今)
  2. touch — 设定文件的访问和修改时间
  3. CodeSmith模板
  4. android中的万能适配器BaseAdapter的总结
  5. Android注解编程的第一步---模仿ButterKnife的ViewBinder机制
  6. centos7.0 没有netstat 命令问题
  7. Q1微信用户增长11% 微信生态圈逐渐完善
  8. delphi 连接MYSQL 的方法
  9. Android设计模式系列--观察者模式
  10. 很好的复习资料: SQL语句到底怎么写 ?
  11. iOS 图片的拉伸,取固定区域显示
  12. miui10 傻瓜式安装google框架方法
  13. 前端回顾:2016年 JavaScript 之星
  14. MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  15. python文件操作-r、w、a、r+、w+、a+和b模式
  16. package &#39;orocos-bfl&#39; not found CMake Error at /usr/share/cmake-2.8/Modules/FindPkgConfig.cmake:283 (message):
  17. 网络端口(port)
  18. linux 修改 elf 文件的dynamic linker 和 rpath
  19. UVA 11637 Garbage Remembering Exam
  20. Dev express 笔记

热门文章

  1. 第3节 sqoop:6、sqoop的数据增量导入和数据导出
  2. MongoDB 监控指标
  3. MySQL 中的数据库名称、数据表名称、字段名称
  4. Linux动静态库
  5. vue的自定义
  6. 019.CI4框架CodeIgniter辅助函数类之:Array数组查询
  7. ConfigureDefender – Windows Defender 设置工具
  8. python pandas数据分析基础入门2——(数据格式转换、排序、统计、数据透视表)
  9. Flask的请求钩子与上下文简览
  10. 【WPF学习】第二十四章 基于范围的控件