| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1665 人关注过本帖
标题:模运算怎么算
只看楼主 加入收藏
lin389064181
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-11-28
结帖率:100%
收藏
 问题点数:0 回复次数:20 
模运算怎么算
Hint:
1、1秒钟内,普通计算机大概处理10^8次运算。题目中的数据量如果用循环语句逐次累加将会使运行时间过长而返回“超时错误” (Time Limit Exceeded),
2.模运算的部分性质
(a + b) % m = (a % m + b % m) % m;
(a * b) % m = ((a % m) * (b % m)) % m;
Input
输入包含多组数据,每组数据包含一个正整数n (1 <= n <= 2*10^8)。
Output
对于每组数据,由于结果可能非常大。输出2的n次方除以100000007取余(就是模100000007)的结果.
Sample Input
5
10
Sample Output
32
1024
搜索更多相关主题的帖子: 正整数 
2012-12-01 01:31
zhuanjia0
Rank: 4
等 级:业余侠客
威 望:3
帖 子:86
专家分:232
注 册:2012-1-13
收藏
得分:0 
很简单的一道题啊!

程序代码:

int n;
cout<<"输入正整数n (1 <= n <= 2*10^8):"<<endl;
cin>>n;
cout<<"结果:"<<(2^n)%100000007<<endl;//输出2的n次方除以100000007取余(就是模100000007)的结果

2012-12-01 14:14
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
程序代码:
#include <stdio.h>
#define N 100000007
int main()
{
    int M;
    int s;
    while ((scanf("%d", &M)) != EOF)
    {
        s = 1;
        do {
            s *= 2;
            if (s > N)
            {
                s %= N;
            }
        } while(--M);
        printf("%d\n", s);
    }
}


[fly]存在即是合理[/fly]
2012-12-01 14:18
lin389064181
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-11-28
收藏
得分:0 
回复 3楼 azzbcc
试多几组数就出错了
2012-12-01 16:35
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
莫非楼主用的是TC,把int改为long就行


[fly]存在即是合理[/fly]
2012-12-01 17:32
lin389064181
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-11-28
收藏
得分:0 
回复 5楼 azzbcc
是VC。。但这个算到27次方的时候就错了。。。
2012-12-01 18:35
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
我不会发图, 结果不是33,554,432么?对的呀!


[fly]存在即是合理[/fly]
2012-12-01 19:50
lin389064181
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-11-28
收藏
得分:0 
回复 7楼 azzbcc
我用你这个验算了一下 26次方是67108864 可27次方是34217721
2012-12-01 22:39
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
肯定当时抄错了,不过按照楼主的
26 :67108864 % 100000007 = 67108864

27 :67108864 * 2 % 100000007 = 134217728 % 100000007 = 34217721
对的啊!


[fly]存在即是合理[/fly]
2012-12-01 23:10
lin389064181
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-11-28
收藏
得分:0 
回复 9楼 azzbcc
Time Limit Exceeded超时了
2012-12-01 23:16
快速回复:模运算怎么算
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019268 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved