每日一水 POJ8道水题
1. POJ 3299 Humidex
链接: http://poj.org/problem?id=3299
这道题是已知H,D,T三者的运算关系,然后告诉你其中两个。求另一个。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main ()
{
char c,h;
double T,D,H;
while(cin>>c)
{
T=D=H=1000;
if (c=='E') break;
if (c=='T') cin>>T;
else if (c=='D') cin>>D;
else cin>>H;//用这种方式输入比较方便
cin>>h;
if (h=='T') cin>>T;
else if (h=='D') cin>>D;
else cin>>H;
if (H==1000)
{
H=T+0.5555*(6.11*exp (5417.7530 * ((1/273.16) - (1/(D+273.16))))-10.0);//exp(t) 表示e的t次
}
if (D==1000)
{
D=1/(1/273.16-log(((H-T)/0.5555+10.0)/6.11)/5417.7530)-273.16;//log(t) 实际上是lnt
}
if (T=1000)
T=H-0.5555*(6.11*exp (5417.7530 * ((1/273.16) - (1/(D+273.16))))-10.0);
printf("T %.1f D %.1f H %.1f\n",T,D,H);//G++上面用.f才AC。
}
return 0;
}
2. POJ 2159 Ancient Cipher
链接: http://poj.org/problem?id=2159
这道题大致是一串密码,经过字母置换和乱序排序之后得到新的一串加密字符串。然后给出一串加密的和一串专家推测出来的密码。问是否为同一个
这道题其实并不能得到确切的,因为乱序的顺序并没有告诉我们,所以只要判断每个字符出现的次数是否相同即可。
这道题一开始做的时候被坑了,以为重置的就是简单向右移动一位。。
//这道题坑爹之处在于密码置换的时候并不是简单的向左加1.。 而是可以任意替换
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int map[30],b[30];
int main ()
{
int i;
char eng[105];
char str[105];
cin>>eng>>str;
for (i=0; i<strlen(eng); i++)
map[eng[i]-'A']++;
for (i=0; i<strlen(str); i++)
b[str[i]-'A']++;
sort(map,map+26);
sort(b,b+26);
int flag=1;
for (i=0; i<26; i++)
if (map[i]!=b[i])
flag=0;
if (flag) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
return 0;
}
3. POJ 2739 sum of consecutive Primer Numbers
链接: http://poj.org/problem?id=2739
这道题的题意是将一个数表示成任意个相邻的素数之和,问能有多少组。
其实这道题用筛选法筛选出素数表之后,简单枚举就好了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int prime[10010];
int a[10010];
int main ()
{
int n,i,j,t=0;
for (i=2; i<10000; i++)
if (!prime[i])
{
a[t++]=i;
for (j=2*i; j<10000; j+=i)
prime[j]=1;
}
while(cin>>n)
{
int p=0,s=0;
if (n==0) break;
for (i=0; i<t; i++)
{
s=0;
if (a[i]>n) break;
j=i;
while(s<n)
{
s+=a[j];
j++;
}
if (s==n) p++;
s=0;
}
cout<<p<<endl;
}
return 0;
}
4. POJ 2262 Goldbach's Conjecture
链接: http://poj.org/problem?id=2262
哥德巴赫猜想的一个应用吧 将一个数拆分成两个素数之和(均大于2) 要求是两者之间的差最大
筛选法求素数
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int a[1000005];
int main ()
{
int i,j,n,t=0;
for (i=2; i<1000000; i++)
if (!a[i])
for (j=2*i; j<1000000; j+=i)
a[j]=1;
while(cin>>n)
{
int b=0;
if (n==0) break;
for (i=3; i<=n/2; i++)//<=..一开始没有注意到 w了。因为6=3+3
if (!a[i] && !a[n-i])
{
b=1;
break;
}
if (b) printf("%d = %d + %d\n",n,i,n-i);
else printf("Goldbach's conjecture is wrong.\n");
}
return 0;
}
POJ 1503 Integer Inquiry
链接: http://poj.org/problem?id=1503
高精度运算之大数加法
要注意前导0的问题。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<ctype.h>
#include<algorithm>
using namespace std;
char num[150][150];
int sum[150]={0};
int main ()
{
int t=0,i,j,max=0;
memset(num,0,sizeof(num));
memset(sum,0,sizeof(sum));
while(gets(num[t]))
{
if (num[t][0]=='0' && strlen(num[t])==1 ) break;
int len=strlen(num[t]);
if (max<len) max=len;
for (i=0, j=len-1; i<j; i++, j--)
{
char temp;
temp=num[t][i];
num[t][i]=num[t][j];
num[t][j]=temp;
}
t++;
}
for (j=0; j<=max; j++)
{
for (i=0; i<t; i++)
if (isdigit(num[i][j]))
sum[j]+=num[i][j]-'0';
if (sum[j]>=10)
{
sum[j+1]+=sum[j]/10;
sum[j]=sum[j]%10;
}
}
while(sum[j]==0)
j--;
for (i=j; i>=0; i--)
cout<<sum[i];
cout<<endl;
return 0;
}
POJ 3006 Dirichlet's Theorem on Arithmetic Progressions
狄利克雷定理
链接: http://poj.org/problem?id=3006
a,b互质,在等差序列a,a+b,a+2b,a+3b……当中有很多个素数。。 给出a,b,n。求出等差数列当中第n个素数。
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int is[1000000];
int main ()
{
is[0]=is[1]=1;
int i,j,a,b,n;
for (i=2; i<1000000; i++)
if (!is[i])
for (j=2*i; j<1000000; j+=i)
is[j]=1;
while(cin>>a>>b>>n)
{
if (a==0) break;
a-=b;
while(n)
{
a+=b;
if (!is[a]) n--;
}
cout<<a<<endl;
}
return 0;
}
POJ 3094 Quicksum
http://poj.org/problem?id=3094
A=1,B=2,……,Z=26,空格=0. 求出一串字符串的值
例如 ACM:=1*1+2*3+3*13=46
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int main ()
{
char str[260];
while(gets(str))
{
int sum=0,i,len=strlen(str);
if (str[0]=='#') break;
for (i=0; i<len; i++)
if (str[i]!=' ')
sum+=(str[i]-'A'+1)*(i+1);
cout<<sum<<endl;
}
return 0;
}
POJ 2255 Tree Recovery
链接: http://poj.org/problem?id=2255
这道题是二叉树重建的裸题
给你二叉树的前序和中序遍历。让你求出后序遍历。
注意递归的利用
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
void build(char *in, char *pre, char *post, int n)
{
int i=0;
if (n<=0) return;
while(*(in+i)!=*(pre)) i++;
build(in,pre+1,post,i);
build(in+i+1,pre+i+1,post+i,n-i-1);
post[n-1]=*pre;
}
int main ()
{
char in[30],pre[30],post[30];
while(cin>>pre>>in)
{
int n;
memset(post,0,sizeof(post));
n=strlen(in);
build(in,pre,post,n);
cout<<post<<endl;
}
return 0;
}
每日一水 POJ8道水题的更多相关文章
- 【转】POJ百道水题列表
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...
- 1503171912-ny-一道水题
一道水题 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 今天LZQ在玩一种小游戏,可是这游戏数有一点点的大,他一个人玩的累.想多拉一些人进来帮帮他.你能写一个程序帮 ...
- ZOJ3778--一道水题
Description As we all know, Coach Gao is a talented chef, because he is able to cook M dishes in the ...
- Co-prime Array&&Seating On Bus(两道水题)
Co-prime Array Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Su ...
- 菜鸟带你飞______DP基础26道水题
DP 158:11:22 1205:00:00 Overview Problem Status Rank (56) Discuss Current Time: 2015-11-26 19:11:2 ...
- 2014年西安区域赛的几道水题(A. F. K)
A . 问一组数能否全部被3整除 K. S1 = A, S2 = B, Si = |Si-1 - Si-2|; 一直循环问, 出现了多少不同的数: 多模拟几组数, 可以发现和辗转相除法有很大关系 ...
- Wow! Such Doge! HDU - 4847(虽然是道水题 但很有必要记一下)
就是求出现了多少次doge 不区分大小写 巧用字符串函数 isalpha 判断是否是字母 tolower 转换为小写字母 toupper 转换为大写字母 strncmp字符串比较函数 能限制比较的 ...
- 来几道水题 d050: 妳那裡現在幾點了?
减去15即可(注意这个数小于15的情况) 题目:珊珊到了美国犹他州的杨百翰大学之后,文文禁不住对她的思念,常常想打电话给她,却又担心在美国的她是不是在睡觉.好不容易鼓起勇气打通了电话,第一句就先问:「 ...
- codeforcess水题100道
之所以在codeforces上找这100道水题的原因是为了巩固我对最近学的编程语言的掌握程度. 找的方式在codeforces上的PROBLEMSET中过的题最多的那些题里面出现的最前面的10个题型, ...
随机推荐
- Linux怎么开启ssh
一.查看ssh开启状态 service ssh status 这是已经开启了的状态 二.如果没有开启 键入以下命令开启 service ssh start 三.开启后如果不能利用xshell远程访问 ...
- 协议栈中使用crc校验函数
CRC校验介绍:循环冗余校验码,原理是多项式除法 ZigBee协议栈:能够使zigbee节点相互之间组网,数据传输,数据获取,数据显示 思路以及步骤: 1.因为IAR的程序是用c写的,所以上网查找如何 ...
- bzoj hash+map+set
先对原串分组hash,查询就是看某一区间内是否出现某值. 可以每个值存一个集合,保存这个值出现的位置.(也可以建可持久化值域线段树) map<int,set<int> >很省事 ...
- wx小程序碎碎念
对button组件的例子中,js代码的一点理解 for (var i = 0; i < types.length; ++i) { (function(type) { // 循环构建目标函数 pa ...
- 2018-2019-20172329 《Java软件结构与数据结构》第二周学习总结
2018-2019-20172329 <Java软件结构与数据结构>第二周学习总结 教材学习内容总结 <Java软件结构与数据结构>第三章 集合概述--栈 一.集合 1.我们印 ...
- 216. 组合总和 III
216. 组合总和 III 题意 找出所有相加之和为 n 的 k 个数的组合.组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字. 说明: 所有数字都是正整数. 解集不能包含重复的 ...
- 彻底解决每次打开visio都提示windows正在配置visio的问题
出现这个提示windows正在配置XXX软件的问题,是由于在安装一个新的版本时,之前那个版本的office没有完全卸载,注册表内有残留. 最简单的方式,并不是 把HKEY_CURRENT_USER\S ...
- webpack vuejs 和 vue-router 如何使用?
读本文之前,建议对webpack和vuejs有初步的了解,通过webpack的官网和vuejs的中文官网了解即可 网站主要目录://某些文件不一定全部罗列出来,注意观察 vue-wepack -src ...
- Lingoes 一款功能强大、简明易用的多语言词典和文本翻译软件
Lingoes 软件自述 Lingoes 是一款功能强大.简明易用的多语言词典和文本翻译软件,支持多达80种语言互查互译,这些语言包括 英.法.德.意.俄.中.日.韩.西.葡.阿拉伯语 及更多... ...
- web服务器boa的移植
1.下载官方网站 http://www.boa.org/ 我下载的是0.94.13版本 2.解压 tar -zxvf boa-0.94.13.tar.gz 3.进入src目录 ./configure ...