c语言-C语言 这个好像很简单,但是怎写

问题描述

C语言 这个好像很简单,但是怎写

Description

There are N stones in a circle, numbered from 0 to N-1. And there are k coins on the kth stone (For example, there are two coins on the stone with number 1). Now, Lasercat wants to collect as many coins as he can. However, he can leap over exactly L stones in a single step, which means he can jump from stone (j mod n) to stone ((j+L) mod n).

Lasercat starts from stone numbered 0 and he can jump as many times as he want. So how many coins can he collect in the end?

Input

The first line contain a single number C (1<=C<=1000) which means the number of test cases.
Then C lines follow, each line has two integers N(1<=N<=1000000) and L(1<=L<=1000000)

Output

For each test case, you should output two lines.
The first line is "Case #:", # means the number of the test case.
The second line output the number of the coins Lasercat can collect.

Sample Input
1
2 1

Sample Output
Case 1:
3

解决方案

你好像一直都在问问题,一边说好简单一边问那么多问题,你真的会吗?
好了,这个题很明显就是看Lx%N能取到哪些数。
看L和N的数据范围,有可能他们不互质,那么L/=gcd(L,N),N/=gcd(L,N),那么接下来讨论L和N互质的情况。
L和N互质的时候,Lx%N只能取到N的简化剩余系里面的数。
N的简化剩余系元素之和是Nphi(N)/2.其中phi(N)是N的欧拉函数。
欧拉函数的求法就是分解质因数。
时间复杂度O(sqrt(N)).
记得最后的答案要乘回去gcd(L,N).
完了。

时间: 2024-08-01 18:41:44

c语言-C语言 这个好像很简单,但是怎写的相关文章

初学c语言图形化编程问个很简单的问题

问题描述 初学c语言图形化编程问个很简单的问题 写37行代码就为了画个围棋棋盘值不值?有更简洁的算法吗? #include<graphics.h> #include<conio.h> #define LEN 30 // 每格间的距离 int main() { int x, y; initgraph(660, 660); // 背景上色 setcolor(BROWN); for(y = 0; y < 660; y++) line(0, y, 660, y); // 绘制边框 s

为什么要学习C语言 C语言优势分析

不止一个学生问到我:"老师,为什么我们的应用程序设计要学C语言而不是别的?C语言不是已经过时了吗?如果现在要写一个Windows程序,用VB或Dephi开发多快呀,用C行吗?退一万步,为什么选择C而不是C++呢?"   不止一个学生问到我:"老师,为什么我们的应用程序设计要学C语言而不是别的?C语言不是已经过时了吗?如果现在要写一个Windows程序,用VB或Dephi开发多快呀,用C行吗?退一万步,为什么选择C而不是C++呢?" 这个问题三言两语还真说不全.简单来

为什么要学习C语言 C语言优势分析_C 语言

不止一个学生问到我:"老师,为什么我们的应用程序设计要学C语言而不是别的?C语言不是已经过时了吗?如果现在要写一个Windows程序,用VB或Dephi开发多快呀,用C行吗?退一万步,为什么选择C而不是C++呢?" 这个问题三言两语还真说不全.简单来说,C语言是计算机程序语言的基础,是实用的程序设计工具,学好C语言对你今后学习JAVA.C++.VB等可以打下良好的基础,因为这些语言大部分都是由C语言扩充或衍生而来的.C可以用于开发比较底层的东西,比如驱动.通信协议之类,在Unix和Li

求问c语言中如何输入这样的形式,很简单的求回答

问题描述 求问c语言中如何输入这样的形式,很简单的求回答 输入1 2 23 45 23 34 这样的形式, 很简单,但是我一时想不到,求解答,菜鸟求帮助 解决方案 int a; int b; printf("%d %dn",a,b); 解决方案二: 看不懂你输入的内容有什么规律,如果只是想连同空格一起输入,那直接在控制窗口敲空格就行,编译器读取流时若发现空格不是想要读取的内容,会自动跳过.

c语言网络编程-标准步骤(比较简单)_C 语言

c语言网络编程-标准步骤,真的很简单啊 server.c 复制代码 代码如下: #include <stdio.h>#include <stdlib.h>#include <string.h>#include <netdb.h>#include <netinet/in.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h> #d

C语言有谁编过一个简单的系统吗?学生信息管理系统 求助!用C++编程

问题描述 C语言有谁编过一个简单的系统吗?学生信息管理系统 求助!用C++编程 各项功能说明 (1)学生基本信息的录入和保存: 这部分的功能主要包括信息的录入和保存和总分.平均分的计算,首先按程序提示输入所要输入的学生人数,接着是分别输入有关学生的相关信息包括学号.姓名.年龄.性别以及学生各科成绩的分数等.在录入数据的同时,系统将对信息的合法性进行检验(学号范围为100~200.姓名不限.年龄为15~50岁.性别可输入m或f.各科成绩均限定在0~100之间),若用户录入了不合法的数据系统将会作出

求解决-求用c语言编写此程序,越简单越好,希望大神们注释一下

问题描述 求用c语言编写此程序,越简单越好,希望大神们注释一下 /**皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,--,如此反复.问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少? 输入格式: 输入在一行中给出两个非负整数,分别是皮球的初始高度和n,均在长整型范围内. 输出格式: 在一行中顺序输出皮球第n次落地时在空中经过的距离.以及第n次反弹的高度,其间以一个空格分隔,保留一位小数.题目保证计算结果不超过双精度范围. 输入样例: 33 5 输出样例:

这是我写的一段c语言程序,做了很久只能做到这样

问题描述 这是我写的一段c语言程序,做了很久只能做到这样 #include #include #include #define N 8 main() { int i,n=0,c=0; int a[N]; srand(time(NULL)); for(i=0;i<N;i++) { a[i]=rand()%2; printf("%8d%8dn",i,a[i]); } printf("n"); while(c<8) { for(i=1;i<N;i++)

c语言-求解。。。C语言的,不是很明白

问题描述 求解...C语言的,不是很明白 为什么啊!看不懂..谁能解答下,各个答案怎么出来的. 选哪个,为什么 解决方案 32http://codepad.org/PTqmi0B8 在线编译运行通过. 解决方案二: 32,你的答案没正确的,最右的那个表达式的值作为逗号表达式的值 解决方案三: 逗号表达式一般形式: 表达式1,表达式2,表达式3--表达式n 如(a=3*5,a*4),a+5 先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a+5得20,即整个表达式的