qq_45735316 2020-10-12 22:12 采纳率: 94.1%
浏览 84
已采纳

难怪题目要特意提醒,为什么最后的结果是负的?

图片说明
图片说明

/*2,0,1,9*/
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
    int i = 1;
    long sum = 0;
    for (i = 1; i <= 2019; i++)
    {
        int m = i;
        while (m > 0)
        {
            int t = m % 10;
            if (t == 2 || t == 0 || t == 1 || t == 9)
            {
                sum += (i * i);
                cout << setw(5) << i;
                break;
            }
            m /= 10;
        }

    }
    cout << endl<<endl;
    cout << sum;
    return 0;
}
  • 写回答

1条回答 默认 最新

  • threenewbee 2020-10-12 23:38
    关注

    你的编译器是32bit的吧,long溢出了
    我用64bit运行,输出 2658417853

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 制裁名单20240508芯片厂商
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致