C语言程序求改错

#include<stdio.h>intmain(){inti,n,f[1000],k;f[0]=849;f[1]=37;for(i=12;i<=110;i++){f[(... #include<stdio.h>

int main()
{
int i,n,f[1000],k;
f[0]=849;
f[1]=37;
for(i=12;i<=110;i++)
{

f[(i-10)]=(f[i-11]*13%1000);

}

while(scanf("%lld",&n)!=EOF)
{
k=(n-10)%100;
printf("%03d\n",f[k]);
}
return 0;
}

提交上去系统总是提示错误如下
=================/sample.out
Right:
801
-----------------
Your:
001
=================

求改错指正。。

题目描述
求13的n次方(12<n≤130000000000)的最后三位数。例如:13的13次方的最后三位数是253,13的20次方的最后三位数是801。
输入
有多组测试数据,每组测试数据一行,即整数n。以文件结尾符结束。
输出
输出13的n次方的最后三位数
样例输入
13
20
样例输出
253
801
展开
 我来答
xoaxa
推荐于2016-02-14 · TA获得超过8613个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3589万
展开全部
#include <stdio.h>

int main() {
int i,n,result;
while(scanf("%d",&n) == 1) {
result = 1;
for(i = 0; i < n; ++i)
result = 13 * result % 1000;
printf("%d\n",result);
}
    return 0;
}
追问
能精简点吗?这个又超过时间限制了。。
追答
#include <stdio.h>
 
int main() {
    int i,n,result;
    while(scanf("%d",&n) == 1) {
        result = 1;
        for(i = 0; i < n; ++i)
            result = 13 * (result % 1000); // 可减少乘法运算次数
        printf("%d\n",result);
    }
    return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式