企业门户网站开发任务书,平面设计素材网,广东网站设计招工.,网站建设企业模板丫题目1#xff1a; 星图演化的总亮度#xff08;快速幂#xff0c;第四次比赛补题#xff09;问题#xff1a;思路#xff1a;由题目可推出n级的所有星图总亮度之和为#xff0c;n的范围过大#xff0c;还需要大数取模。而快速幂的时间复杂度低#xff0c;仅有O(logn) 星图演化的总亮度快速幂第四次比赛补题问题思路由题目可推出n级的所有星图总亮度之和为n的范围过大还需要大数取模。而快速幂的时间复杂度低仅有O(logn)并且适用于大数取模模幂运算它可以在每一步都取模避免中间结果溢出并保证结果正确故使用快速幂算法详情看C知识点专栏第二篇代码#include stdio.h #include stdlib.h //题目翻译求3^n*2^n相当于求6^n考虑递归快速幂 const long long MOD1000000007; long long qpow(long long n){ if(n0){ return 1; } else if(n%21){ return (qpow(n-1)*6)%MOD; } else{ long long tqpow(n/2); return (t*t)%MOD; } } int main() { long long n; scanf(%lld,n); printf(%lld,qpow(n)); return 0; }题目2字符串翻转问题思路分奇偶来考虑n为偶数则将字符串分为二段来输出每段各输出n/2个字符n为奇数则将字符串分为三段来输出第一段输出前n/2个第二段输出一个最中间第三段输出后n/2个注意单个字符输出用%c%s期望的是一个以\0结尾的字符数组的首地址%s用于字符串字符数组 含义读取或输出以空字符\0结尾的字符序列自动跳过开头的空白字符遇到空白字符空格、\n、\t就停止读取代码#include stdio.h #include stdlib.h #include string.h int main() { char str[100]; scanf(%s,str); int n; nstrlen(str); int idxn/2; if(!(n%2)){ for(int iidx-1;i0;i--){ printf(%c,str[i]); } for(int in-1;iidx;i--){ printf(%c,str[i]); } } else{ for(int iidx-1;i0;i--){ printf(%c,str[i]); } printf(%c,str[idx]); for(int in-1;iidx1;i--){ printf(%c,str[i]); } } // fdsa glkj n/2-1~0 n-1~n/2 闭区间 // fas a glk n/2-1~0 n/2 n-1~n/21 闭区间 return 0; }题目3upupup第四次比赛补题问题思路代码#include stdio.h #include stdlib.h int main() { int T; scanf(%d,T); while(T--){ int n; scanf(%d,n); int *nummalloc(sizeof(int)*n); for(int i0;in;i){ scanf(%d,num[i]); } int issame0; for(int i0;in-1;i){ for(int ji1;jn;j){ if(num[j]num[i]){ issame1; } } } if(issame){ printf(NO\n); } else{ printf(YES\n); } free(num); } return 0; }题目4zwz买装备哦第四次补题问题思路逐个比较代码#include stdio.h int main() { int n, x, y, z, t; scanf(%d %d %d %d %d, n, x, y, z, t); int ansxy; // 不换装备的战斗力 int moneytz; // 卖掉旧装备后的总钱数 for (int i0;in;i) { int a,b,c; scanf(%d %d %d,a,b,c); if(cmoney){ int powerab; if(powerans) { anspower; } } } printf(%d\n,ans); return 0; }题目5qqq的好数组第四次补题问题思路二个数字如果它们%q都相等那么他们一定能通过有限次q的操作达到相等代码#include stdio.h #include stdlib.h int main() { int n,q; scanf(%d %d,n,q); int *nummalloc(sizeof(int)*n); for(int i0;in;i){ scanf(%d,num[i]); } int a1; int ynum[0]%q; for(int i1;in;i){ if((num[i]%q)!y){ a0; break; } } if(a) printf(YES); else printf(NO); free(num); return 0; }