times值过大,想在求S的时候取模,但是写在S的表达式里面会报错,写在外面又溢出


#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int main() {
    unsigned int a1, d, b1, q, times, S = 0;
    scanf("%d%d%d%d", &a1, &d, &b1, &q);
    /*printf("\n");*/
    scanf("%d", &times);
    for (int i = 1;i <= times;i++)
    {
        S = S + (a1 + (i - 1) * d) * (b1 * pow(q, i - 1));

    }

    printf("%d", S);
    return 0;
}

你这要解决什么问题,我可以看看吗,或者是值都是多少