[C++] solution
\npublic:\n    int calcBas(int x, int y, int bas){\n        int ret = 0;\n        -- x;\n        while(x)\n            ret -= (x /= bas);\n        while(y)\n   
```\npublic:\n    int calcBas(int x, int y, int bas){\n        int ret = 0;\n        -- x;\n        while(x)\n            ret -= (x /= bas);\n        while(y)\n            ret += (y /= bas);\n        return ret;\n    }\n    int calcZeros(int x, int y){\n        return min(calcBas(x, y, 2), calcBas(x, y, 5));\n    }\n    string toFixedString(int x){\n        string ret = "";\n        for(int i=0; i<5; i++){\n            ret = (char)((x % 10) + \'0\') + ret;\n            x /= 10;\n        }\n        return ret;\n    }\n    string abbreviateProduct(int left, int right) {\n        int Z = calcZeros(left, right);\n        long long x = 1;\n        bool sCalc = true;\n        int eZ = Z, fZ = Z;\n        for(int i=left; i<=right; i++){\n            int X = i;\n            while(X % 2 == 0 && eZ)\n                X /= 2, -- eZ;\n            while(X % 5 == 0 && fZ)\n                X /= 5, -- fZ;\n            x *= X;\n            if(x >= 1e10){\n                sCalc = false;\n                break;\n            }\n        }\n        if(sCalc)\n            return to_string(x) + \'e\' + to_string(Z);\n        long long las = 1;\n        eZ = Z, fZ = Z;\n        for(int i=left; i<=right; i++){\n            int X = i;\n            while(X % 2 == 0 && eZ)\n                X /= 2, -- eZ;\n            while(X % 5 == 0 && fZ)\n                X /= 5, -- fZ;\n            las *= X;\n            las %= 100000;\n        }\n        long long fir = 1;\n        eZ = Z, fZ = Z;\n        for(int i=left; i<=right; i++){\n            int X = i;\n            while(X % 2 == 0 && eZ)\n                X /= 2, -- eZ;\n            while(X % 5 == 0 && fZ)\n                X /= 5, -- fZ;\n            fir *= X;\n            while(fir >= 1e12)\n                fir /= 10;\n        }\n        while(fir >= 1e5)\n            fir /= 10;\n        return to_string(fir) + "..." + toFixedString(las) + \'e\' + to_string(Z);\n    }\n};\n```
['C']