求12的个数
来源:互联网 发布:试客联盟怎么绑定淘宝 编辑:程序博客网 时间:2024/06/08 07:09
给定正整数N,函数F(N)表示小于等于N的自然数中1和2的个数之和,例如:1,2,3,4,5,6,7,8,9,10序列中1和2的个数之和为3,因此F(10)=3。输入N,求F(N)的值,1=<N<=10^100(10的100次方)若F(N)很大,则求F(N)mod20123的值。
#include <stdio.h>
#include <string.h>int calcMod(int n)
{
int ret=1 ;
int remain = n%5;
for (int i =0 ;i < n/5 ;i++)
{
ret *=10000;
ret%=20123;
}
for (int i = 0;i< remain;i++)
{
ret *=10;
}
ret%=20123;
return ret;
}
int calcTotal(char * pData,int len)
{
int res =0;
for (int i =0 ;i <len;i++)
{
res+= (pData[i]-'0')*calcMod(len-i-1);
}
return res;
}
int calcValue(int first,int n)
{
int ret = 0;
if (0==first)
{
if (n >0)
ret+=2*n*calcMod(n-1);
return ret ;
}
else if (1==first)
{
ret = calcMod(n);
if (n >0)
ret+=(first+1)*n*calcMod(n-1)*2;
return ret %20123;
}
ret = 2*calcMod(n);
if (n >0)
ret+=(first+1)*n*calcMod(n-1)*2;
return ret %20123;
}
int calc(char * pData,int len)
{
int total =0;
if (0==len)
return 0;
if ('0'==*pData)
return calc(pData+1,len-1);
if ('1'==*pData)
{
total = calcValue(0,len-1)+1;
total+=calcTotal(pData+1,len-1);
return (total+calc(pData+1,len-1))%20123;
}
if ('2'==*pData)
{
total = calcValue(1,len-1)+1;
total+=calcTotal(pData+1,len-1);
return (total+calc(pData+1,len-1))%20123;
}
total = calcValue(*pData-'0'-1,len-1);
return (total + calc(pData+1,len-1))%20123;
}
int main(void)
{
char number[512]="";
while (1)
{
printf("please input a number:");
scanf("%s",number);
if (0==strlen(number))
break;
int res = calc(number,strlen(number));
printf("res = %d \n",res);
}
getchar();
return 0;
}
- 求12的个数
- 求素数的个数
- 求一的个数
- 求字母的个数
- 求排列的个数
- 求字母的个数
- 求1的个数
- 求约数的个数
- 求空地的个数
- 求0的个数
- 求直角三角形的个数
- 求约数的个数
- 求约数的个数
- N个数求最大的k个数
- 求文本中求回车的个数
- 求2个数的最大公约数
- 求1的个数问题
- 求 1 出现的个数
- jsp与SERVLET的区别
- 《我的第一本c++书》学习笔记:STL之vector容器的常用操作函数
- HDU 4632
- HDU 4619 Warm up 2 (2013 多校第二场) - from lanshui_Yang
- iOS中assign、copy 、retain等关键字
- 求12的个数
- mesh和wifi
- Java解析JavaScript数据
- Java中对Map(HashMap,TreeMap,Hashtable,LinkedHashMap等)的排序
- IE iframe 跨域问题的解决办法
- IOS学习笔记29—提示框第三方库之MBProgressHUD
- URAL 1117 - Hierarchy(递推或递归)
- AIX sendmail 通过其他邮箱发送邮件
- struts2中常用的常量介绍