1003(题目及原解答https://blog.csdn.net/g28_gwf/article/details/81436606)
1.统计某字符出现次数和种类用map最好
2.注意输出时NO和No的区别
#include
#include
1010(题目及原解答https://blog.csdn.net/g28_gwf/article/details/79991863)
1.注意输出:当输入仅有一组数(此时指数必为0)时,注意输出 “0 0”
#include
using namespace std;
int main(){
int a, b;
bool isFirst = true;
while(cin >> a >> b){
if(b != 0){
if(isFirst == true){
cout << a * b << ' ' << b - 1;
isFirst = false;
}else{
cout << ' ' << a * b << ' ' << b - 1;
}
}else{
break;
}
}
if(isFirst == true){
cout << "0 0";
}
return 0;
}
1014(题目及原解答https://blog.csdn.net/g28_gwf/article/details/80018677)
1.在同一循环里判断时要注意break的使用
#include
#include
1015(题目及原解答https://blog.csdn.net/g28_gwf/article/details/80018769)
1.程序结构简单但超时,把cin,cout换成scanf,printf
2.注意多维vector的使用
3.学号不要用string存,会排序失败
#include
#include
#include
#include
using namespace std;
struct Stu{
int ID;
int D;
int C;
int grade;
};
bool cmp(Stu a, Stu b){
if(a.grade != b.grade){
return a.grade > b.grade;
}else if(a.D != b.D){
return a.D > b.D;
}else if(a.ID != b.ID){
return a.ID < b.ID;
}
}
int main(){
int N, L, H;
cin >> N >> L >> H;
vector v[4];
getchar();
for(int i = 0; i < N; i++){
int ID;
int D, C;
scanf("%d %d %d", &ID, &D, &C);
if(C >= L && D >= L){
if(D >= H && C >= H){
v[0].push_back(Stu{ID, D, C, D + C});
}else if(D >= H && C < H){
v[1].push_back(Stu{ID, D, C, D + C});
}else if(D < H && C < H && D >= C){
v[2].push_back(Stu{ID, D, C, D + C});
}else{
v[3].push_back(Stu{ID, D, C, D + C});
}
}
}
for(int i = 0; i < 4; i++){
sort(v[i].begin(), v[i].end(), cmp);
}
cout << v[0].size() + v[1].size() + v[2].size() + v[3].size() << endl;
for(int i = 0; i < 4; i++){
for(int j = 0; j < v[i].size(); j++){
printf("%d %d %d\n", v[i][j].ID, v[i][j].D, v[i][j].C);
}
}
return 0;
}
1017 (题目及原解答https://blog.csdn.net/g28_gwf/article/details/81447907)
1.注意去除输出中第一个0的正确方法:在输出字符串的时候,若某数非0且为第一个非0数,则从次数开始输出
2.若最后输出字符串长度不为0且没有输出过,说明数值为0,应当手动输出一个0
#include
#include
using namespace std;
int main(){
string A, Q = "";
int B, R = 0;
cin >> A >> B;
int q;
for(int i = 0; i < A.size(); i++){
q = R * 10 + A[i] - '0';
R = q % B;
Q += q / B + '0';
}
bool isFirst = true;
for(int i = 0; i < Q.size(); i++){
if(isFirst == true){
if(Q[i] != '0'){
cout << Q[i];
isFirst = false;
}
}else{
cout << Q[i];
}
}
if(isFirst == true && Q.size() != 0){
cout << '0';
}
cout << ' ' << R << endl;
return 0;
}
1018(题目及原解答https://blog.csdn.net/g28_gwf/article/details/80170322)
1.用map储存次数时可能会遇到某元素未出现的情况,此时要为map的键值对做初始化,如全部赋0
#include
#include
#include
1020(题目及原解答https://blog.csdn.net/g28_gwf/article/details/80170985)
1.没有明确指定类型的数据应当使用double来储存
#include
#include
#include
using namespace std;
struct Cake{
double total;
double amount;
double price;
};
bool cmp(Cake a, Cake b){
return a.price > b.price;
}
int main(){
int N;
double D;
cin >> N >> D;
vector v(N);
for(int i = 0; i < N; i++){
cin >> v[i].amount;
}
for(int i = 0; i < N; i++){
cin >> v[i].total;
v[i].price = 1.0 * v[i].total / v[i].amount;
}
sort(v.begin(), v.end(), cmp);
double ans = 0.0;
for(int i = 0; i < N; i++){
if(D > v[i].amount){
ans += v[i].total;
D -= v[i].amount;
}else{
ans += v[i].price * D;
break;
}
}
printf("%.2lf\n", ans);
return 0;
}
1024(题目及原解答https://blog.csdn.net/g28_gwf/article/details/80208686)
1.不需要用声明新的字符串,直接输出新字符串即可
2.当指数e大于0时,小数点所需右移位数为e + 2个
#include
#include
#include
using namespace std;
int main(){
string s;
cin >> s;
if(s[0] == '-'){
cout << '-';
}
string num = "";
string n = "";
int i;
for(i = 1; s[i] != 'E'; i++){
num += s[i];
}
i++;
for(; i < s.size(); i++){
n += s[i];
}
int e = atoi(n.c_str());
if(e < 0){
cout << "0.";
for(int i = 0; i < -e - 1; i++){
cout << '0';
}
for(int i = 0; i < num.size(); i++){
if(num[i] != '.'){
cout << num[i];
}
}
}else{
int len = 0;
int i;
for(i = 0; i < num.size() && len < e + 2; len++, i++){
if(num[i] != '.'){
cout << num[i];
}
}
if(i != num.size()){
cout << '.';
while(i != num.size()){
cout << num[i++];
}
}
if(len != e){
while(len != e + 2){
cout << '0';
len++;
}
}
}
return 0;
}
1025(题目及原解答https://blog.csdn.net/g28_gwf/article/details/80377433)
1.节点数量与实际adddress不同(不知道为什么)
#include
#include
#include
#include