zoukankan      html  css  js  c++  java
  • acm寒假特辑1月18日 HDU-1420(数学优化算法)

    集训进行了将近2个礼拜,这段时间以恢复性训练为主,我一直在密切关注大家的训练情况,目前为止,对大家的表现相当满意,首先是绝大部分队员的训练积极性很高,其次,都很遵守集训纪律,最后,老队员也起到了很好的带头作用,这里特别感谢为这次DP专题练习赛提供题目和测试数据的集训队队长xhd同学.

    特别高兴的是,跟随集训队训练的一批新队员表现非常好,进步也比较显著,特别是训练态度大大超出我的预期,我敢说,如果各位能如此坚持下去,绝对前途无量!

    考虑到新队员还没有经过系统训练,我这里特别添加一道简单题:
    给定三个正整数A,B和C(A,B,C<=1000000),求A^B mod C的结果.

    希望各位都能体会到比赛中AC的快乐,绝对的量身定制,很高的待遇哟,呵呵…
    Input
    输入数据首先包含一个正整数N,表示测试实例的个数,然后是N行数据,每行包括三个正整数A,B,C。
    Output
    对每个测试实例请输出计算后的结果,每个实例的输出占一行。
    Sample Input
    3
    2 3 4
    3 3 5
    4 4 6
    Sample Output
    0
    2
    4

    这里对数据的考虑,需要优化下计算,没优化自己测数据量小没关系,一跑起来就wa了。
    根据(a%c)*(b%c)=(a+b)%c来优化,防止数据溢出。数据用long long。

    //miku saiko
    #include <cmath>
    #include <iostream>
    
    
    using namespace std;
    
    int main()
    {
        long long a,b,c;
        int t,i;
        cin>>t;
        while(t--)
        {
            cin>>a>>b>>c;
            long long ans=1;
            a%=c;
            for(i=1;i<=b;i++)
            {
                ans*=a;
                ans%=c;
            }
            cout<<ans<<endl;
        }
        return 0;
    }
    

    错误代码 直接wa了,这么大的数据量用pow一下就不行了,而且用数组做的,改进后直接用while就可以了,简单很多。

    //错误❌
    #include<cmath>
    #include<math.h>
    #include<iostream>
    using namespace std;
    
    int main()
    {
    	int n;
    	cin >> n;
    	int a[10000][3] = { 0 }; long long x[10000];
    	for (int i = 0; i < n; i++)
    	{
    		cin >> a[i][0] >> a[i][1] >> a[i][2];
    	}
    	for (int i = 0; i < n; i++)
    	{
    		x[i] = (long long)pow(a[i][0], a[i][1]) % a[i][2];
    	}
    	for (int i = 0; i < n; i++)
    	{
    		cout << x[i] << endl;
    	}
        return 0;
    }
    
  • 相关阅读:
    快速排序算法
    冒泡排序
    正则表达式
    博客园 自定义 个性主题优化 这是我迄今为止用过的最好的模板 silence
    Python 中 如何复制图片?如何更改图片存储路径? 在遇无数坑后的最全解答 百试百灵
    作业test
    day69
    day68
    day67
    day67test
  • 原文地址:https://www.cnblogs.com/gidear/p/10433302.html
Copyright © 2011-2022 走看看