赞
踩
题目描述
给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C。
输入描述:
输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。
输出描述:
对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。
输入例子:
4 1 2 3 2 3 4 2147483647 0 2147483646 0 -2147483648 -2147483647输出例子:
Case #1: false Case #2: true Case #3: true Case #4: false
- #include <iostream>
- #include <string>
- #include <vector>
- #include <sstream>
- using namespace std;
- int Str2Num(string &str,vector<long long> &inputData){
- long long sum = 0;
- int flag = 0;
- size_t i = 0;
- int operatorflag = 1;
- while(i < str.size()){
- if(str[i] <= '9' && str[i] >= '0'){
- if(i>0){
- if(str[i-1] == '-')
- operatorflag = -1;
- }
- sum = sum*10 + str[i] - '0';
- flag = 1;
- // cout << sum << endl;
- }
- else{
- if(flag){
- inputData.push_back(operatorflag*sum);
- flag = 0;
- operatorflag = 1;
- }
- sum = 0;
- }
- i++;
- if(i == str.size() && flag)
- inputData.push_back(operatorflag*sum);
- }
- // for(auto ij : inputData)
- // cout << ij << endl;
- return 0;
- }
- int main()
- {
- int numTol;
- string InputDataStr;
- string str1,str2,str1Temp,str2Temp;
- vector<long long> inputData;
- vector<string> ans;
- cin >> numTol;
- int ij = 0;
- cin.ignore();
-
-
- while(ij < numTol){
- stringstream sstr;
- getline(cin,InputDataStr);
- // cout << InputDataStr << endl;
- if(Str2Num(InputDataStr,inputData))
- return 0;
- if(inputData.size() == 3){
- if(inputData[0] + inputData[1] > inputData[2]){
- sstr << (ij+1);
- str1Temp = sstr.str();
- str1 = "Case #"+str1Temp+": true";
- ans.push_back(str1);
- }
- else{
- sstr << (ij+1);
- str2Temp = sstr.str();
- str2 = "Case #"+str2Temp+": false";
- ans.push_back(str2);
- }
- }
- ij++;
- InputDataStr.clear();
- inputData.clear();
-
- }
- for(auto i : ans)
- cout << i << endl;
- return 0;
- }

题目描述
给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和; A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...; A3 = 被5除后余2的数字的个数; A4 = 被5除后余3的数字的平均数,精确到小数点后1位; A5 = 被5除后余4的数字中最大数字。输入描述:
每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。
输出描述:
对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。 若其中某一类数字不存在,则在相应位置输出“N”。输入例子:
13 1 2 3 4 5 6 7 8 9 10 20 16 18
- #include <iomanip>
- #include <string>
- #include <vector>
- #include <iostream>
- #include <algorithm>
- #include <sstream>
- using namespace std;
-
- /*
- * 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:
- * A1 = 能被5整除的数字中所有偶数的和;
- * A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
- * A3 = 被5除后余2的数字的个数;
- * A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
- * A5 = 被5除后余4的数字中最大数字。
- * 输入描述:
- * 每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,
- * 随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。
- * 输出描述:
- * 对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,
- * 但行末不得有多余空格。
- * 若其中某一类数字不存在,则在相应位置输出“N”。
- * 输入例子:
- * 13 1 2 3 4 5 6 7 8 9 10 20 16 18
- * 输出例子:
- * 30 11 2 9.7 9
- */
-
- int str2Num(string &str,vector<unsigned int> &inputData){
- int sum = 0;
- int flag = 0;
- size_t i = 0;
- while(i < str.size()){
- if(str[i] <= '9' && str[i] >= '0'){
- sum = sum*10 + str[i] - '0';
- flag = 1;
- // cout << str[i] << endl;
- }
- else{
- if(flag){
- inputData.push_back(sum);
- sum = 0;
- flag = 0;
- // cout << " " << endl;
- }
- }
- i++;
- // cout << "i = " << i << endl;
- if(i == str.size())
- inputData.push_back(sum);
- }
- // cout << "over" <<endl;
- return 0;
- }
-
- int main()
- {
- // size_t numTol = 0;
- string inputDataStr;
- vector<unsigned int> inputData,inputDataTemp,A1,A2,A3,A4,A5;
- int sumA1 = 0;
- int sumA2 = 0;
- // int sumA3 = 0;
- float sumA4 = 0;
- unsigned int sumA5 = 0;
- // cin >> numTol;
- // cin.ignore();
- getline(cin,inputDataStr);
- // cout << inputDataStr << endl;
- str2Num(inputDataStr,inputDataTemp);
- // cout << inputDataTemp.size() << " "<< inputDataTemp[0] << endl;
- if((inputDataTemp.size() != 0) && (inputDataTemp.size()-1 == inputDataTemp[0])){
- // cout << "yes " << endl;
- for(size_t i = 1;i < inputDataTemp.size();i++)
- inputData.push_back(inputDataTemp[i]);//vector不能使用下标添加元素
- for(auto i : inputData){
- //A1 = 能被5整除的数字中所有偶数的和;
- //13 1 2 3 4 5 6 7 8 9 10 20 16 18
- if(i % 5 == 0 && i % 2 == 0)
- A1.push_back(i);
- //A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
- else if(i % 5 == 1)
- A2.push_back(i);
- //A3 = 被5除后余2的数字的个数;
- else if(i % 5 == 2)
- A3.push_back(i);
- //A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
- else if(i % 5 == 3){
- A4.push_back(i);
- // cout << i << endl;
- }
- //A5 = 被5除后余4的数字中最大数字。
- else if(i % 5 == 4)
- A5.push_back(i);
- else{
-
- }
- }
- // cout << A1.size() << endl;
- for(size_t i = 0;i < A1.size();i++)
- sumA1 += A1[i];
- for(size_t i = 0; i < A2.size();i++)
- sumA2 += A2[i]*pow(-1,i);
-
- if(A4.size()){
- for(size_t i = 0;i< A4.size();i++)
- sumA4 += A4[i];
- sumA4 /= A4.size();
- }
- //小数点后留一位
- // sumA4 = (float)(int)((sumA4 + 0.05)*10)/10;
- if(A5.size()){
- sumA5 = A5[0];
- for(size_t i = 0;i < A5.size();i++){
- if(A5[i] > sumA5)
- sumA5 = A5[i];
- }
- }
- string sumA1Str = "N",sumA2Str = "N",sumA3Str = "N",sumA4Str = "N",sumA5Str = "N";
- stringstream sumA1stream,sumA2stream,sumA3stream,sumA4stream,sumA5stream;
- if(sumA1 != 0){
- sumA1stream << sumA1;
- sumA1Str = sumA1stream.str();
- }
- if(sumA2 != 0){
- sumA2stream << sumA2;
- sumA2Str = sumA2stream.str();
- }
- if(A3.size() != 0){
- sumA3stream << A3.size();
- sumA3Str = sumA3stream.str();
- }
- if(sumA4 != 0){
- // sumA4stream << sumA4;
- // sumA4Str = sumA4stream.str();
- }
- if(sumA5 != 0){
- sumA5stream << sumA5;
- sumA5Str = sumA5stream.str();
- }
- // cout << sumA1 << " " << sumA2 << " " << A3.size() << " " << sumA4 << " " << sumA5 << endl;
- if(sumA4 != 0 )
- cout << sumA1Str << " " << sumA2Str << " " << sumA3Str << " " << setiosflags(ios::fixed) << setprecision(1) << sumA4 << " " << sumA5Str << endl;
- else
- cout << sumA1Str << " " << sumA2Str << " " << sumA3Str << " " << "N" << " " << sumA5Str << endl;
- }
-
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。