当前位置: 首页 > wzjs >正文

杭州建设信用网新网站宜宾网站建设工作室

杭州建设信用网新网站,宜宾网站建设工作室,网站网页设计海报图片,亚马逊网站开发ACM多组数据的处理、求最大公约数的欧几里得算法、快速幂运算,以及求解循环节等问题 一、输入 问题:输入不说明有多少个Input Block 1.EOF为结束标志 EOF是-1 因为scanf返回值是成功读取数据的个数 此例子中,scanf返回的是2;2&a…

 ACM多组数据的处理、求最大公约数的欧几里得算法、快速幂运算,以及求解循环节等问题

一、输入

问题:输入不说明有多少个Input Block

1.EOF为结束标志

EOF是-1

因为scanf返回值是成功读取数据的个数

此例子中,scanf返回的是2;2!=-1,因此while执行

当所有的数都读取完了,scanf返回-1,while结束

C语言:

#include <stdio.h>
int main()
{int a, b;while (scanf("%d %d", &a, &b) != EOF)printf("%d\n", a + b);return 0;
}

C++:

while(cin >> a >> b)
{......}

2. 判断是否等于读取的个数

由scanf的含义,直接判断个数

#include <stdio.h>
int main()
{int a, b;while (scanf("%d %d", &a, &b) == 2)printf("%d\n", a + b);return 0;
}

问题:输入不说明有多少个Input Block,但以某个特殊输入为结束标志 

推荐用 if 语句

#include <stdio.h>
int main()
{int a, b;while (scanf("%d%d", &a, &b) == 2){if (a == 0 && b == 0) break;printf("%d\n", a + b);}return 0;
}

问题:输入一整行字符串

C语言(不推荐使用 `gets`):
 

#include <stdio.h>int main(){char buf[20];gets(buf); // 不推荐使用,因为存在缓冲区溢出的风险printf("%s\n", buf);return 0;
}

C++语言示例(推荐使用 `getline`):
 

#include <iostream>
#include <string>
using namespace std;int main(){string buf;getline(cin, buf); // 使用 std::getline 读取字符串cout << buf << endl;return 0;
}

C++语言示例(使用字符数组):
 

#include <iostream>
using namespace std;int main(){char buf[255];cin.getline(buf, 255); // 使用 cin.getline 读取字符数组cout << buf << endl;return 0;
}

gets 在C语言中是不安全的,因为它不检查输入的长度,容易导致缓冲区溢出。

在C++中,推荐使用 `std::getline` 或 `cin.getline` 来安全地读取字符串。

二、输出

注意输出空行、空格、无空格的细节。

三、算法做题思想

1.时刻注意数据溢出

给定一个正整数 nn,请计算 2+3+…+n2+3+…+n 的结果,其中 n<50000。

Sample input:
10
Sample output:
55

法一:暴力——循坏——超时

法二:公式——爆int(超过int范围)

解决爆int:1.long long 类型 %lld (64位整数)2.高精度 等


2.转化问题——问题简单化

给定两个正整数,计算这两个数的最小公倍数。
样例输入:

10 14
4 6
样例输出:
70
12

法一:暴力——数据大会超时

法二:公式——lcm(A,B)=A*B/gcd(A,B)

注:公式先乘后除会爆int,因为:乘后可能会超范围  避免爆int:先除后乘

由此,求最小公倍数变为求最大公倍数gcd(A,B)——辗转相除法(欧几里得算法)

辗转相除法:

x是要求的gcd

①10和14都是x的倍数

②把14分为10和4,那么4也是x的倍数

证明:10=ax;14=bx;(10+4)=bx;ax+4=bx;4=(a-b)x;

③求10和14的gcd可以转变为10和4的gcd

以此类推:

int gcd(int da, int xiao)//不用在乎da和xiao的顺序:会交换回来
{int temp;while (xiao != 0){temp = da % xiao;da = xiao;xiao = temp;}return da;
}

3.寻找循环节规律

给定一个正整数 N ,请计算 N 个 N 相乘的结果的个位数是多少(1<=N<=1000000000)。

Sample Input  
3  
Sample Output  
7

法一:纯暴力枚举法——超时

法二:微暴力——每次模10再乘N——可能超时

法三:找规律:

每次个位存起来,什么时候循环了就记循环量,然后直接求余。

个位0~9中,0 1 5 6的次方为它本身

每个数的循环节个数不同,有1、2、4个。可以都按4算

有一种Fibonacci数列,定义如下:

F(0) = 7

F(1) = 11,

F(n) = F(n-1) + F(n-2)

给定一个n(n < 1,000,000),请判断F(n)能否被3整除,分别输出yes和no。

 变换: f(n)%3——(F(n-1) + F(n-2))%3——F(n-1)%3 + F(n-2)%3

每个f%3后发现规律:1 2 0 2 2 1 0 1   1 2 0 2 

1 2 0 2 2 1 0 1 为一个循环节

求A^B(A的B次方)的最后三位数表示的整数(1 <= A, B <= 1000000000)

Sample Input  
2 3  
12 6  

Sample Output  
8  
984

法一:暴力

法二:快速幂算法(二分加速)

把123^234=(123^2)^117

递归:

int power(int a, int n)
{int ans;if(n == 0) ans = 1;    // 结束条件else{ans = power(a * a, n / 2);    // 递归调用if(n % 2 == 1) ans *= a;    // n为奇数}return ans;
}

循环:

int power(int a, int n)
{int ans = 1;while (n){if (n % 2) ans = ans * a; // 奇数情况a = a * a; // 底数平方n = n / 2; // 指数减半}return ans;
}

 


文章转载自:

http://HOkmVgmf.dhmLL.cn
http://xmeMVkz2.dhmLL.cn
http://R4YRtm2h.dhmLL.cn
http://oBQQzZ6h.dhmLL.cn
http://UAG3uLYK.dhmLL.cn
http://quYDi8X2.dhmLL.cn
http://2x9uQawd.dhmLL.cn
http://kjpdLXyV.dhmLL.cn
http://nWImfXjP.dhmLL.cn
http://t7Zn006f.dhmLL.cn
http://ISPivfYN.dhmLL.cn
http://R1JW8TWx.dhmLL.cn
http://wMUKPYSO.dhmLL.cn
http://v8uotxQy.dhmLL.cn
http://pbdtBs22.dhmLL.cn
http://EAGRwGU8.dhmLL.cn
http://OJv3NzlC.dhmLL.cn
http://8aD0bqrj.dhmLL.cn
http://hwiiKjfO.dhmLL.cn
http://XOyzGgjh.dhmLL.cn
http://OqQN6jzZ.dhmLL.cn
http://gVIQQxRB.dhmLL.cn
http://fJqTPufy.dhmLL.cn
http://mMLq6Sva.dhmLL.cn
http://mG2VGPVv.dhmLL.cn
http://8bXllfXN.dhmLL.cn
http://xwp9TqiW.dhmLL.cn
http://T97CcBfG.dhmLL.cn
http://9RDGT6qS.dhmLL.cn
http://requmSGw.dhmLL.cn
http://www.dtcms.com/wzjs/662585.html

相关文章:

  • 好用的建筑设计网站有哪些企业可以做招聘的网站有哪些
  • 有没有网站是免费做店招图片的微商城手机网站
  • 网站开发建设的步骤云浮源峰网站建设工作室地址
  • 做网站不备案会怎样哪个网站可以做头像
  • 汉字叔叔花了多少钱做网站删掉cache wordpress
  • 资讯门户类网站模板网站备案号 有效期
  • 网站广告长沙市网页设计培训哪家好
  • 常德网站网站建设wordpress禁止更新插件
  • 网站开发设计图片手机网站seo
  • 四川省建设厅中心网站母婴网站开发
  • 郑州专业做网站的icp wordpress 模板
  • 长沙百度网站快速排名深圳建设网站公司
  • 网站源码怎样弄成网站济南电子商务网站建设
  • 天津 网站建设公司科技霸主从新能源车开始
  • dedecms网站别名解析营销推广方案范文
  • 网站制作接单甘肃营销型网站制作
  • 东莞专业的网站制作有哪些白云高端网站建设案例
  • 网站开发师职责重庆白云seo整站优化
  • 手机网站支持微信支付百度广告投放价格
  • 网站建设可行性报告范文常州 网站制作
  • 阿里云做的网站这么卡的深圳做网站网络营销公司哪家好
  • 高效网站建设公司教育培训行业网站建设
  • 创建网站做搞笑视频呼市网站设计公司
  • 资源网站建设多少钱设计师兼职网站
  • 怎么创建私人网站天津机械网站建设模板
  • 做网站中网页的大小ai国外教程网站
  • 网站设计制作视频西双版纳网站建设公司
  • 企业形象宣传策划方案广州网站优化指导
  • 商务网站创建厦门营销网站建设公司
  • 临沂网站建设公司最专业的网站建设机构