C 指数程序
问题是 南希讨厌任何包含数字“13”的字符串。克劳索想送给她一根弦,他正在考虑他的选择,当然他永远不会选择一根有“13”作为子串的弦 告诉Clouseau由N个字符组成的此类字符串的总数。字符串可以包含0-9之间的任意整数,可以重复任意次数 输入: 输入文件的第一行包含一个数字T,表示测试用例的数量。以下T行,每行包含一个整数N 输出: 输出文件应在一个新行中包含每个查询的答案,该新行的模数为1000000009 限制条件: 1吨100000, 0 N 1000000009 我的逻辑不正确C 指数程序,c,exponentiation,C,Exponentiation,问题是 南希讨厌任何包含数字“13”的字符串。克劳索想送给她一根弦,他正在考虑他的选择,当然他永远不会选择一根有“13”作为子串的弦 告诉Clouseau由N个字符组成的此类字符串的总数。字符串可以包含0-9之间的任意整数,可以重复任意次数 输入: 输入文件的第一行包含一个数字T,表示测试用例的数量。以下T行,每行包含一个整数N 输出: 输出文件应在一个新行中包含每个查询的答案,该新行的模数为1000000009 限制条件: 1吨100000, 0 N 1000000009 我的逻辑不正确 #
# include <stdio.h>
# define MOD 1000000009
unsigned long long mod_pow(unsigned long long num, unsigned long long pow, unsigned long long mod)
{
unsigned long long test;
unsigned long long n = num;
for(test = 1; pow; pow >>= 1) {
if (pow & 1)
test = ((test % mod) * (n % mod)) % mod;
n = ((n % mod) * (n % mod)) % mod;
}
return test;
}
int main(int argc, char* argv[])
{
long t;
unsigned long long total_no, bad_no, n;
scanf ("%ld", &t);
while (t--) {
scanf ("%lld", &n);
if (n != 1) {
total_no = (10 * (mod_pow (10, n-1, MOD))) % MOD;
bad_no = ((n - 1) * (mod_pow(10, n-2, MOD))) % MOD;
printf ("%lld\n", (((total_no - bad_no) % MOD)));
}
else
printf ("10\n");
}
return 0;
}
#包括
#定义MOD 1000000009
无符号长长模功率(无符号长模功率、无符号长模功率、无符号长模功率)
{
无符号长-长试验;
无符号长n=num;
用于(测试=1;功率;功率>>=1){
如果(功率和1)
测试=((测试%mod)*(n%mod))%mod;
n=((n%mod)*(n%mod))%mod;
}
回归试验;
}
int main(int argc,char*argv[])
{
长t;
无符号长-长-长总计编号,坏编号,n;
scanf(“%ld”、&t);
而(t--){
scanf(“%lld”、&n);
如果(n!=1){
总功率=(10*(模功率(10,n-1,模))%模;
错误号=((n-1)*(mod_-pow(10,n-2,mod)))%mod;
printf(“%lld\n”,((总数-坏数)%MOD));
}
其他的
printf(“10\n”);
}
返回0;
}
您可以使用此功能:
long long int bigmod ( long long a, long long p, long long m )
{
if ( p == 0 )return 1; // If power is 0, then a ^ 0 = 1 for any value of a, And 1 Mod m=1 for any value of m, So return 1
if ( p % 2 ) // If power is odd, Split it : a ^ 5 =( a )* (a ^ 4) --> left and right child respectively.
{
return ( ( a % m ) * ( bigmod ( a, p - 1, m ) ) ) % m;
}
else //If power is even then split it equally and return the result...
{
long long c = bigmod ( a, p / 2, m );
return ( (c%m) * (c%m) ) % m;
}
}
并按如下方式调用此函数:
int main(){
// take input....
//Calling...
printf("result is %lld\n",bigmod(a,p,MOD)); //
return 0;
}
使用调试器逐行检查代码,同时查看相关变量的值。希望这能帮助你理解正在发生的事情。你能告诉我我的逻辑是否正确吗?我刚刚给了你一个提示,告诉你如何自己解决这个问题。先这样做。即使你仍然无法理解,那么它也会给你的问题提供足够的提示,你可以把这些提示包含在你的问题中?说真的,这些任务是谁写的?南希想写小说,但他们告诉她她写得很糟糕,所以她最终写的是编程书。。。。