-
在C++中,
setw
默认是右对齐,如果需要左对齐的话,不是使用负数,而是使用left
关键字:#include <iomanip> cout << left << setw(10) << output << endl; //占10个字符的位置并左对齐
-
setprecision
如果不使用fixed
关键字,就是保留总共的位数,如果使用,就是精确到小数点之后的位数。 -
Ruby的
Array.new(i, object)
,前面是数组大小,后面则是数组元素的初始值,当然不设置初始值也是可以的,比如,如果要建立一个16*16的二维数组,可以使用如下语句:test = Array.new(16, Array.new(16))
1458
:就是根据不同队伍之间的获胜概率,计算每一支队伍得到总冠军的概率,思路就不说了,大致解释一下代码,final8
是进入四分之一决赛的概率,final4
是进入半决赛的概率,同理,final2
、final1
是进入决赛和夺冠的概率,输出一个队的夺冠概率时一直向上调用就好了。
代码如下:
#include <iostream>
#include <iomanip>
using namespace std;
string name[16];
double match[16][16];
double final8(int i){
double tmp1 = i % 2 ? match[i][i - 1] / 100.0 : match[i][i + 1] / 100.0;
return tmp1;
}
double final4(int i){
double tmp1, tmp2;
int tmp3 = i / 4;
tmp1 = i % 4 <= 1 ? final8(tmp3 * 4 + 2) * match[i][tmp3 * 4 + 2] / 100.0 + final8(tmp3 * 4 + 3) * match[i][tmp3 * 4 + 3] / 100.0 : final8(tmp3 * 4) * match[i][tmp3 * 4] / 100.0 + final8(tmp3 * 4 + 1) * match[i][tmp3 * 4 + 1] / 100.0;
tmp2 = final8(i) * tmp1;
return tmp2;
}
double final2(int i){
double tmp1 = 0, tmp2;
int tmp3 = i / 8;
if(i % 8 <= 3){
for(int j = 4; j <= 7; j++)
tmp1 += final4(tmp3 * 8 + j) * match[i][tmp3 * 8 + j] / 100.0;
}else{
for(int j = 0; j <= 3; j++)
tmp1 += final4(tmp3 * 8 + j) * match[i][tmp3 * 8 + j] / 100.0;
}
tmp2 = final4(i) * tmp1;
return tmp2;
}
double final1(int i){
double tmp1 = 0, tmp2;
if(i % 16 <= 7){
for(int j = 8; j <= 15; j++)
tmp1 += final2(j) * match[i][j] / 100.0;
}else{
for(int j = 0; j <= 7; j++)
tmp1 += final2(j) * match[i][j] / 100.0;
}
tmp2 = final2(i) * tmp1;
return tmp2;
}
int main(){
for(int i = 0; i < 16; i++)
cin >> name[i];
for(int i = 0; i < 16; i++){
for(int j = 0; j < 16; j++)
cin >> match[i][j];
}
for(int i = 0; i < 16; i++){
cout << left << setw(11) << name[i];
cout << "p=" << fixed << setprecision(2) << final1(i) * 100.0 << '%' << endl;
}
}
1459:就是输入一个偶数,判断是不是两个素数的和,本来打算用筛法
做,但是TLE
了,后来干脆判断每一个数,居然0.64s过了,看来对于不同的问题,也对挑好方法,毕竟术业有专攻啊。
代码如下:
#include <iostream>
using namespace std;
bool is_prime(int num){
for(int i = 2; i * i <= num; i++){
if(num % i == 0)
return false;
}
return true;
}
int main(){
int n, has_result;
while(cin >> n && n != 0){
has_result = 0;
for(int i = 3; i <= n / 2; i += 2){
if(is_prime(i) && is_prime(n - i)){
cout << n << " = " << i << " + " << n - i << endl;
has_result = 1;
break;
}
}
if(!has_result)
cout << "Goldbach's conjecture is wrong." << endl;
}
}