You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeChef C++竞赛编程:如何实现多测试用例?

解决多测试用例下整数首尾数字之和的问题

原代码存在的问题

  • 未读取题目要求的测试用例数T,直接读取单个整数N
  • 存在冗余的for循环:获取首尾字符不需要遍历整个字符串,直接通过索引即可拿到
  • 缺少处理多测试用例的循环逻辑,仅能处理单个输入
  • 输出结果无换行,多个测试用例的结果会连在一起,不符合竞赛题输出格式要求

修改后的实现思路

  1. 先读取测试用例数T
  2. 通过循环执行T次处理流程:
    • 每次循环读取一个整数N
    • 将N转为字符串后,直接取第一个字符(索引0)和最后一个字符(可用convert.length()-1或convert.back())
    • 利用字符ASCII码特性转整数(字符 - '0'),比stoi更简洁高效
    • 计算首尾数字之和并输出,每次输出后换行

修改后的完整代码

#include <iostream>
#include <string>
using namespace std;

int main() {
    int T;
    // 读取测试用例数
    cin >> T;
    
    // 循环处理每个测试用例
    while (T--) {
        int N;
        cin >> N;
        
        string convert = to_string(N);
        // 直接取首尾字符并转成整数
        int firstDigit = convert[0] - '0';
        int lastDigit = convert.back() - '0';
        
        int total = firstDigit + lastDigit;
        cout << total << endl;
    }
    
    return 0;
}

额外说明

  • while(T--)是竞赛中常用的写法,每次循环T自减1,直到T为0时结束,逻辑简洁高效
  • 字符转整数用convert[0] - '0':'0'到'9'的ASCII码连续,减去'0'的ASCII值就能得到对应数字,比调用stoi更直接
  • 输出加endl确保每个测试用例结果单独占一行,符合竞赛题输出规范

内容的提问来源于stack exchange,提问作者cindicate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:45:14