关于c++的一道问题 此代码样例过了但零分 求改 蟹蟹

img


#include<stdio.h>
using namespace std;
int n,m,k,s,i=2;
int main(){
    scanf("%d%d%d",&n,&m,&k);
    while(i<k){
        s=(n*m)%10;
        n=m;
        m=s;
        i++;
    }
    printf("%d\n",s);
    return 0;
}

img
10^12 = 1000000000000,所以 i k 的数据类型是 int 型就超范围了,修改如下,供参考:


#include<stdio.h>

int main()
{
    int  n, m, s;
    __int64  k, i = 2;
    scanf("%d%d%I64d", &n, &m, &k);
    while (i < k){
        s = (n * m) % 10;
        n = m;
        m = s;
        i++;
    }
    printf("%d\n",s);
    return 0;
}