计算次数
/*
//方法一
#include <stdio.h>
long long pow_mod( long long a,long long n,long long m)
{
int ans = 1;
a = a % m;
while(n>0)
{
if(n%2 ==1)
ans=(ans*a)%m;
n=n/2;
a=(a*a) % m;
}
return ans;
}
int main()
{
int a,n;
scanf("%d",&n);
while(n--)
{
scanf("%lld",&a);
printf("%lld\n",pow_mod(2,a,1000000)-1);
}
}
*/
#include <iostream>
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
using namespace std;
int nunu(int a)
{
int i;
int m=1;
if (a>50000)
a = a%50000+50000;
for(i=2;i<=a;i++)
{
m = m*2+1;
m = m%1000000;
}
return m;
}
int main()
{
int a;
int n;
scanf("%d",&n);
while (n--)
{
scanf("%d",&a);
printf("%d\n",nunu(a));
}
return 0;
}
模拟过程
// 汉诺塔
# include <stdio.h>
void hanoi ( int n, char a, char b, char c ) //这里代表将a柱子上的盘子借助b柱子移动到c柱子
{ if (1 == n) //如果是一个盘子直接将a柱子上的盘子移动到c
{
printf("%c-->%c\n",a,c);
}
else
{
hanoi ( n-1, a, c, b ) ; //将a柱子上n-1个盘子借助c柱子,移动到b柱子
printf("%c-->%c\n",a , c) ; //再直接将a柱子上的最后一个盘子移动到c
hanoi ( n-1, b, a, c ) ; //然后将b柱子上的n-1个盘子借助a移动到c
}
}
int main ()
{ int n ;
printf( "Input the number of diskes:") ;
scanf("%d",&n) ;
hanoi ( n, 'A' , 'B' , 'C' ) ;
return 0;
}