C++11中可以这样写:
1 |
std::cout << std::defaultfloat; |
C++11以前是这样写的:
1 |
std::cout.unsetf(std::ios_base::floatfield); |
C++11中可以这样写:
1 |
std::cout << std::defaultfloat; |
C++11以前是这样写的:
1 |
std::cout.unsetf(std::ios_base::floatfield); |
编写函数Normalize,将复数归一化,即若复数为a+bi,归一化结果为a/sqrt(a*a+b*b) + i*b/sqrt(a*a+b*b) 。使用结构体指针类型作为函数参数可能是必要的。其中实部和虚部由键盘输入,输出为归一化结果,如果归一化结果的实部或虚部为小数的要求保留一位小数。
样例输入:(格式说明:3 4 分别为以空格隔开的实数的实部和虚部)
3 4
样例输出:
0.6+0.8i
样例输入:
2 5
样例输出:
0.4+0.9i
分析:没什么好分析的耶。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { double a, b; double p, q; cin >> a >> b; p = a / sqrt(a * a + b * b); q = b / sqrt(a * a + b * b); cout << setprecision(1) << p; if(q > 0) { cout << "+"; cout << setprecision(1) << q; cout.unsetf(ios_base::floatfield); cout << "i"; } else if(q < 0) { cout << setprecision(1) << q; cout.unsetf(ios_base::floatfield); cout << "i"; } return 0; } |
问题描述
最近的m天盾神都去幼儿园陪小朋友们玩去了~
每个小朋友都拿到了一些积木,他们各自需要不同数量的积木来拼一些他们想要的东西。但是有的小朋友拿得多,有的小朋友拿得少,有些小朋友需要拿到其他小朋友的积木才能完成他的大作。如果某个小朋友完成了他的作品,那么他就会把自己的作品推倒,而无私地把他的所有积木都奉献出来;但是,如果他还没有完成自己的作品,他是不会把积木让出去的哟~
盾神看到这么和谐的小朋友们感到非常开心,于是想帮助他们所有人都完成他们各自的作品。盾神现在在想,这个理想有没有可能实现呢?于是把这个问题交给了他最信赖的你。
输入格式
第一行为一个数m。
接下来有m组数据。每一组的第一行为n,表示这天有n个小朋友。接下来的n行每行两个数,分别表示他现在拥有的积木数和他一共需要的积木数。
输出格式
输出m行,如果第i天能顺利完成所有作品,输出YES,否则输出NO。
样例输入
2
2
2 2
1 3
3
1 5
3 3
0 4
样例输出
YES
NO
数据规模和约定
1<=n<=10000,1<=m<=10。
分析:首先将已经能够完成作品的积木个数释放,然后优先分配给需要积木最少的人
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#include <iostream> #include <algorithm> using namespace std; struct node { int t1, t2, res; }; int cmp1(node p, node q) { return p.res > q.res; } int main() { int m, n; cin >> m; for(int i = 0; i < m; i++) { cin >> n; int t = 0; int flag = 0; node *a = new node[n]; for(int j = 0; j < n; j++) { cin >> a[j].t1 >> a[j].t2; a[j].res = a[j].t1 - a[j].t2; if(a[j].res >= 0) { a[j].res = -99999999; t += a[j].t1; } } sort(a, a+n, cmp1); int k = 0; while(a[k].res != -99999999) { t += a[k].res; if(t < 0) { cout << "NO" << endl; flag = 1; break; } t += a[k].t2; k++; } if(flag == 0) cout << "YES" << endl; } return 0; } |
问题描述
银行近期推出了一款新的理财计划“重复计息储蓄”。储户只需在每个月月初存入固定金额的现金,银行就会在每个月月底根据储户账户内的金额算出该月的利息并将利息存入用户账号。现在如果某人每月存入k元,请你帮他计算一下,n月后,他可以获得多少收益。
输入格式
输入数据仅一行,包括两个整数k(100<=k<=10000)、n(1<=n<=48)和一个小数p(0.001<=p<=0.01),分别表示每月存入的金额、存款时长、存款利息。
输出格式
输出数据仅一个数,表示可以得到的收益。
样例输入
1000 6 0.01
样例输出
213.53
分析:不知道给出的样例是不是有问题。。我用xcode运行出来结果是213.54
结果提交了还AC了。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> #include <cstdio> using namespace std; int main() { int k, n; double p; cin >> k >> n >> p; double ans = 0; for(int i = 0; i < n; i++) { ans = ans + k; ans = ans * (1 + p); } printf("%.2f", ans - n * k); return 0; } |
问题描述
by ZBY… :) 淘淘拿到了一份名单,他想对上面的名字进行处理,挑出一些特殊的名字,他请你来帮忙。
淘淘关注以下名字:
如果这个名字是“WYS”,他希望你的程序输出“KXZSMR”。
如果这个名字是“CQ”,他希望你的程序输出“CHAIQIANG”。
如果这个名字是“LC“,他希望你的程序输出“DRAGONNET”。
如果这个名字是“SYT”或“SSD”或“LSS”或“LYF”,他希望你的程序输出“STUDYFATHER”。
如果这个名字与上述任意名字都不相同,他希望你的程序输出“DENOMINATOR”。
输入格式
第一行有一个整数N,表示淘淘手中名单里的人数。
接下来N行,每行有一个字符串,即名单里的人名。
输出格式
输出N行,每行输出每个人名的判断结果。
样例输入
9
WYS
CQ
WYS
LC
SYT
SSD
LSS
LYF
ZBY
样例输出
KXZSMR
CHAIQIANG
KXZSMR
DRAGONNET
STUDYFATHER
STUDYFATHER
STUDYFATHER
STUDYFATHER
DENOMINATOR
数据规模和约定
对于 50% 数据,N <= 1000,且名单中的名字仅可能为“WYS”,“CQ”,“LC”三者之一,没有其他的名字。
对于 100% 数据,N <= 10000,人名仅由大写字母组成,长度不超过5。
分析:水题。。但是原谅我才知道switch里面只能char型或者int型。。我还以为可以string类型。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <iostream> using namespace std; int main() { int n; cin >> n; string s; for(int i = 0; i < n; i++) { cin >> s; if(s == "WYS") { cout << "KXZSMR" << endl; } else if(s == "CQ") { cout << "CHAIQIANG" << endl; } else if(s == "LC") { cout << "DRAGONNET" << endl; } else if(s == "SSD" || s == "LSS" || s == "LYF" || s == "SYT") { cout << "STUDYFATHER" << endl; } else { cout << "DENOMINATOR" << endl; } } return 0; } |
问题描述
完成一个递归程序,倒置字符数组。并打印实现过程
递归逻辑为:
当字符长度等于1时,直接返回
否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
输入格式
字符数组长度及该数组
输出格式
在求解过程中,打印字符数组的变化情况。
最后空一行,在程序结尾处打印倒置后该数组的各个元素。
样例输入
Sample 1
5 abcde
Sample 2
1 a
样例输出
Sample 1
ebcda
edcba
edcba
Sample 2
a
分析:测试用例坑坑哒。。最后会多输出一遍倒置完了的字符串就算了。。还会在前面多加一个空行。。。(手动再见- -||)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> using namespace std; string s; void func(int head, int tail) { if(tail - head <= 0) return ; swap(s[head], s[tail]); cout << s << endl; func(head+1, tail-1); } int main() { int n; cin >> n >> s; func(0, n-1); cout << endl << s << endl; return 0; } |