#include
const int c=2009;
int main()
{
int n,p,s,i,j,t;
scanf("%d%d",&n,&p);//输入2个数字11和2,存入变量n和p中.
s=0;t=1;//t的初始值为1
for(i=1;i<=n;i++)//循环1,循环运算 t=t*p%c运算式 n遍.
{
t=t*p%c; //t乘以p的积,对2009求余.并将得到的值赋给t.//注:求余的意思就是只取余数位.比如10%3,则求余就得到的是1.
for(j=1;j<=i;j++)//循环2,循环运算( s=(s+t)%c)
s=(s+t)%c;
}
printf("%d\n",s);
return 0;
}
//当i=1时,t=1*2%2009,得t=2.然后进入循环2循环1次,得到s=(0+2)%2009,得s=2;
//当i=2时,t=2*2%2009,得t=4,然后进入循环2循环2次:第一次得到s=(2+4)%2009,即s=6;第二次s=(6+4)%2009,得s=10;
//当i=3时,t=4*2%2009,得t=8,然后进入循环2循环3次...
//...以此类推执行n次循环1,即11次.循环2执行了(1+2+3+..+11)次,最后得到s.
类似代码如下,
对于先取整再求和 与 先求和再取整 是一样的
t = 1; s = 0;
for (i = 1; i <= n; i++)
{
t = t*p%c;
s = s+i*t;
}
s = s%c;
printf("%d\n",s);
楼主给的东西不是很完整啊,看看是不是你要的结果。
void
Init()
{
int
gd=DETECT,gm;
/*
定义变量,gd有了初值
*/
initgraph(&gd,&gm,"d:\\tc");
/*
初始化图形设备,准备画图的工作
*/
cleardevice();
/*
清理设备(缓存啊,屏幕之类)
*/
setcolor(YELLOW);
/*
设置颜色为黄色
*/
outtextxy(250,10,"anykey
to
continue");
/*
在输出设备上的250,10处写上“anykey
to
continue”字符(字体颜色就是上句设置的黄色)
*/
setcolor(RED);
/*
设置颜色为红色
*/
outtextxy(20,300,"preorder");
/*
在(20,300)处写上“preorder”字符(红色)
*/
outtextxy(20,350,"midorder");
/*
在(20,350)处写上“midorder”字符(红色)
*/
outtextxy(20,400,"posorder");
/*
在(20,400)处写上“midorder”字符(红色)
*/
getch();
/*用来接收标准输入设备输入的一个字符或按键
*/
}
/*遍历时显示每个结点的过程*/
void
DrawNode(Tree
*t,int
color)
{
setcolor(YELLOW);
/*
设置颜色为黄色
*/
setfillstyle(SOLID_FILL,YELLOW);
/*
设置填充的类型和颜色
*/
fillellipse(t->x,t->y,10,10);
/*
在(t->x,t->y),处画一个10,10的椭圆
*/
setcolor(RED);
/*
设置颜色为红色
*/
sprintf(str,"%c",t->data);/*将内容转换成字符串输出*/
/*将t->data里的数据存到了str中*/
outtextxy(t->x-3,t->y-2,str);
/*
在(t->x-3,t->y-2)处写str里的字符(红色)
*/
setcolor(color);
/*
设置颜色为给定的颜色color
*/
outtextxy(s.x,s.y,str);
/*
在(s.x,s.y)处写str里的字符(color)
*/
setcolor(RED);
/*
设置颜色为红色
*/
sprintf(str,"%d",s.num);/*将遍历次序用数字显示在树的结点上*/
outtextxy(t->x-3,t->y-20,str);
/*
在(t->x-3,t->y-2)处写str里的字符(红色)
*/
s.num++;
/*
遍历到下个节点
*/
sleep(1);
/*
延迟1秒
*/
}
t=t*p%c; %号优先级最高,
i = 1 时 t = t * 2 %2009 = 1*2 =2
s=(s+t)%c; ()优先级最高
以此类推
所以结果如下:
11 2
i=1 t=2
j=1 s=2
i=2 t=4j=1 s=6 j=2 s=10
i=3 t=8j=1 s=18 j=2 s=26 j=3 s=34
i=4 t=16j=1 s=50 j=2 s=66 j=3 s=82 j=4 s=98
i=5 t=32j=1 s=130 j=2 s=162 j=3 s=194 j=4 s=226 j=5 s=258
i=6 t=64j=1 s=322 j=2 s=386 j=3 s=450 j=4 s=514 j=5 s=578 j=6 s=642
i=7 t=128
j=1 s=770 j=2 s=898 j=3 s=1026 j=4 s=1154 j=5 s=1282 j=6 s=1410 j=7
s=1538
i=8 t=256
j=1 s=1794 j=2 s=41 j=3 s=297 j=4 s=553 j=5 s=809 j=6 s=1065 j=7 s=1
321 j=8 s=1577
i=9 t=512
j=1 s=80 j=2 s=592 j=3 s=1104 j=4 s=1616 j=5 s=119 j=6 s=631 j=7 s=1
143 j=8 s=1655 j=9 s=158
i=10 t=1024
j=1 s=1182 j=2 s=197 j=3 s=1221 j=4 s=236 j=5 s=1260 j=6 s=275 j=7 s
=1299 j=8 s=314 j=9 s=1338 j=10 s=353
i=11 t=39
j=1 s=392 j=2 s=431 j=3 s=470 j=4 s=509 j=5 s=548 j=6 s=587 j=7 s=62
6 j=8 s=665 j=9 s=704 j=10 s=743 j=11 s=782 782
算法是这样的