急求一个小程序:
要求输入一个一百位以上的数字n,求n的e次方再除以d的余数
其中n可以用随机数获取(输入一个种子),e和d是自己输入的数字有界面的再送100分
界面至少有三个框框,分别输入三个数,有一个按钮用来求值

解决方案 »

  1.   

    界面不难,关键是算法, n的e次方且n大于一百位,直接求值再模是不现实的啊
      

  2.   

    这个问题楼主怎么发了两个地方?算法才是问题
    private long calculate(long n, long d, long e) {
        if (e == 1)
            return n%d;
        return (n*calculate(n, d, e-1))%d;
    }
    qquujj ()  ,再把分给我吧,哈哈
      

  3.   

    直接用大数计算就行了,java提供得有:
    import java.math.BigInteger;public class Test {
           public static void main(String[] args) {
                  BigInteger bigInt = new BigInteger("232222222222222222222222222222222");
                  System.out.println(bigInt.pow(23).mod(new BigInteger("20")));
           }
    } BigInteger pow(int exponent) 
              Returns a BigInteger whose value is (this exponent). BigInteger mod(BigInteger m) 
              Returns a BigInteger whose value is (this mod m). 相信你
      

  4.   

    #include <iostream>
    #include <cstdio>
    #include <ctime>
    #include <cmath>using namespace std;void queen(int** array, int row, FILE* fp);
    bool isAvailable(int** array, int y, int x);
    bool isResult(int** array);int main(int arg, char** argv) {
    int num[10];
    for (int i = 0; i < 10; i++) {
    num[i] = 0;
    }num[9] = 8888;
    num[8] = 0;
    num[7] = 2345;int carry = 0;
    int sum = 0;
    int result = 0;
    int i = 9;
    int factor = 233883;
    while (i > 0) {
    sum = num[i] * factor + carry;
    result = sum % 10000;
    carry = sum / 10000;
    num[i] = result;
    i--;
    }for (int i = 0; i < 10; i++) {
    printf("%4d ", num[i]);
    }return 0;
    }